2013-08-04 3 views
0

Im пытается создать библиотеку, в которой я мог бы интегрировать с R в будущем, но и использовать в командной строкеMake-файл г ++ разделяемые библиотеки

Мой первый шаг на пути создает библиотеку, либо .a или. так

Это мой файл 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) 

(Дальнейшие улучшения возможны, когда Makefile работает.)

+0

Эй. Я внес изменения и несколько других изменений, и я получил его для создания файлов obj и .a. Однако теперь wilxtest не может найти wilcoxonParallelTests.h. Я отредактировал описание выше, чтобы дать вам более точную информацию о том, что у меня есть. Кроме того, что вы упомянули об улучшении Makefile? – user1047833

+0

Где находится 'wilcoxonParallelTests.h'? Если он находится в, скажем, 'headers /', тогда вы должны добавить '-Iheaders' в соответствующую команду. Кроме того, если вы не имеете этой проблемы с 'wilcoxonParallelTests', это говорит о том, что что-то подозрительно в другом месте (но есть несколько вещей, которые могут быть). – Beta

+0

Привет, спасибо! Isrc сделал это. im с исходными и заголовочными файлами в одной папке. Любые советы о том, как улучшить общее качество файла заголовка? – user1047833