2014-10-19 106 views
0

我有一個的CMakeLists.txt一個項目,該項目包含來源:cmake的生成文件也不創建靜態庫

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

使用cmake我產生MSYS一個makefile與-std = GNU + 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? 如果有幫助,這是完整生成的生成文件: https://gist.github.com/anonymous/1c4982a86794f8c490b6

生成makefile有什麼問題嗎?

此外,如果您需要其他任何東西,請評論,我會提供。

回答

0

我解決了這個問題,通過看這在我的情況下被位於acgl_bin \ CMakeFiles \ ACGL.dir \ link.txt 它包含負責創建庫行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" 

AR找不到路,所以我把它改成了相對路徑:

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" 

和一切編譯罰款。