2014-10-19 109 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" 

和一切编译罚款。