2013-08-04 68 views
0

我试着去创造,我可以在未来[R整合,而且还可以使用命令行上Make文件G ++共享库

我的路径第一步是创建一个库,无论是某或库。所以

这是我的make文件。它编译罚款,但是当我看到的文件夹为空(这意味着我不能用它在我的wilxtest.cpp

EXTERNALLIBS = -lnetcdf_c++ -lgsl -lgslcblas 
WILXAPP = src/wilxtest.cpp 
CXX = g++ 
CXXFLAGS = -Wall -ggdb 
LIBOBJS: src/wilcoxonParallelTests.o 
LIBRARY: lib/WilcoxonParallelTests.a 

$(LIBRARY): $(LIBOBJS) 
    $(CXX) $(CXXFLAGS) ar cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS) 

bin/Debug/WilxAstakTest: $(WILXAPP) 
    $(CXX) $(CXXFLAGS) -o [email protected] $^ $(EXTERNALLIBS) 

Debug: $(LIBRARY) bin/Debug/WilxAstakTest 

MkDirs: 
    mkdir -p obj 
    mkdir -p lib 
    mkdir -p bin/Debug 

cleanDebug: 
    rm -rf obj/* 
    rm -rf lib/* 
    rm -rf bin/Debug/* 

编辑:

我有“:”而不是“=” 。LIBOBJS和库后我也没有必须的目标,以创建目标文件下面是更新的版本:

EXTERNALLIBS = -lnetcdf_c++ -lgsl -lgslcblas 
WILXAPP = src/wilxtest.cpp 
CXX = g++ 
CXXFLAGS = -Wall -ggdb 
LIBCPP = src/wilcoxonParallelTests.cpp 
LIBOBJS = obj/wilcoxonParallelTests.o 
LIBRARY = lib/WilcoxonParallelTests.a 

$(LIBOBJS): $(LIBCPP) 
    $(CXX) $(CXXFLAGS) -c $(LIBCPP) -o $(LIBOBJS) 

$(LIBRARY): $(LIBOBJS) 
    ar -cr $(LIBRARY) $(LIBOBJS) 

bin/Debug/WilxAstakTest: $(WILXAPP) $(LIBRARY) 
    $(CXX) $(CXXFLAGS) -o [email protected] $^ $(EXTERNALLIBS) 

Debug: $(LIBRARY) bin/Debug/WilxAstakTest 

MkDirs: 
    mkdir -p obj 
    mkdir -p lib 
    mkdir -p bin/Debug 

cleanDebug: 
    rm -rf obj/* 
    rm -rf lib/* 
    rm -rf bin/Debug/* 

回答

2

取而代之的是:

$(LIBRARY): $(LIBOBJS) 
    $(CXX) $(CXXFLAGS) ar cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS) 

试试这个:

$(LIBRARY): $(LIBOBJS) 
    ar -cr $(LIBRARY) $(LIBOBJS) $(EXTERNALLIBS) 

(进一步的改进是可能的,一旦生成文件的工作。)

+0

嘿。我做了你的改变和其他一些改变,并且我创建了obj和.a文件。但是,现在wilxtest找不到wilcoxonParallelTests.h。我编辑了上面的描述,为您提供更多关于我所拥有的信息。另外,你提到了如何改进Makefile? – user1047833

+0

'wilcoxonParallelTests.h'在哪里?如果它在'headers /'中,那么你应该添加'-Iheaders'到有问题的命令。另外,如果你不用'wilcoxonParallelTests'来解决这个问题,那就表明其他地方有些东西是可疑的(但有几件事情可能会发生)。 – Beta

+0

嘿谢谢! Isrc做到了。即时通讯源和头文件在同一个文件夹中。有关如何提高头文件整体质量的任何提示? – user1047833