2013-08-04 174 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