2014-10-19 2 views
0

У меня есть источники из проекта с CMakeLists.txt, который содержит:CMake генерируется Makefile не создает статическую библиотеку

ADD_LIBRARY(ACGL${COMPILE_POSTFIX} STATIC ${SOURCE_FILES} ${HEADER_FILES}) 
TARGET_LINK_LIBRARIES(ACGL${COMPILE_POSTFIX} ${LIBRARIES}) 

Использование CMake сгенерировать Makefile для MSYS причем -std = гну ++ 11 опция установлена ​​через

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") 

Это прекрасно работает, и все файлы .obj создаются при использовании make. Однако после создания всех файлов .obj не создает статическую библиотеку и, таким образом, завершается с ошибкой:

[...] 
[ 90%] Building CXX object CMakeFiles/ACGL.dir/src/rgbe/rgbe.cc.obj 
[ 93%] Building CXX object CMakeFiles/ACGL.dir/src/lodepng/lodepng.cpp.obj 
[ 95%] Building CXX object CMakeFiles/ACGL.dir/src/nv_dds/nv_dds.cpp.obj 
Linking CXX static library "/C/Users/Tarek/Desktop/Netbeans Workspace/acgl/lib/l 
ibACGL.a" 
C:/MinGW/bin/ar.exe: /C/Users/Tarek/Desktop/Netbeans Workspace/acgl/lib/libACGL. 
a: No such file or directory 
make[2]: *** [C:/Users/Tarek/Desktop/Netbeans Workspace/acgl/lib/libACGL.a] Erro 
r 1 
make[1]: *** [CMakeFiles/ACGL.dir/all] Error 2 
make: *** [all] Error 2 

Может кто-нибудь объяснить мне, почему библиотека не будет создана, даже если ADD_LIBRARY указано в cmakelists? Если это поможет это полное генерироваться Makefile: https://gist.github.com/anonymous/1c4982a86794f8c490b6

Есть ли что-то неправильно в генерировании в Makefile?

Также, если вам нужно что-либо еще, просьба прокомментировать, и я предоставлю его.

ответ

0

Я исправил это, глядя на link.txt в моем случае был расположен в acgl_bin \ CMakeFiles \ ACGL.dir \ link.txt Он содержит строку, ответственную за создание библиотеки:

C:/MinGW/bin/ar.exe cr "/c/Users/Tarek/Desktop/Netbeans Workspace/acgl/lib/libACGL.a" CMakeFiles/ACGL.dir/src/ACGL/ACGL.cc.obj [more obj files] 
C:/MinGW/bin/ranlib.exe "/c/Users/Tarek/Desktop/Netbeans Workspace/acgl/lib/libACGL.a" 

ар не может найти путь, так что я изменил его на относительный путь:

C:/MinGW/bin/ar.exe cr "../acgl/lib/libACGL.a" CMakeFiles/ACGL.dir/src/ACGL/ACGL.cc.obj [more obj files] 
C:/MinGW/bin/ranlib.exe "../acgl/lib/libACGL.a" 

и все компилируется нормально.

Смежные вопросы