簡體   English   中英

cmake生成的makefile不會創建靜態庫

[英]cmake generated makefile doesn't create static library

我有一個帶有CMakeLists.txt的項目的資源,其中包含:

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

使用cmake我通過設置-std = gnu ++ 11選項為MSYS生成一個makefile

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

有人可以向我解釋為什么即使在cmakelists中指定了ADD_LIBRARY也不創建庫嗎? 如果有幫助的話,這是完整的生成的makefile: https : //gist.github.com/anonymous/1c4982a86794f8c490b6

生成文件是否有問題?

另外,如果您還有其他需要,請發表評論,我會提供。

我通過查看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"

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"

一切都編譯良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM