cmake如何链接没有用libxxx.a命名的静态库?

时间:2015-07-24 08:02:25

标签: cmake

正确的链接命令是

g++ file1.o file2.o xxx.0 -o target -I./ -I/usr/local/libmylibone/ 
-L./ -L/usr/local/testlib/ ../lib/special_lib/static_lib.a 
-lasn1c++ -lmysqlclient -lnsl -lm -lz -lc -ldl -lpthread -lrt -ljson

请关注../lib/special_lib/static_lib.a,这是一个静态库,而不是以libxxx.a命名。而且我不知道如何编写CMake命令来获得正确的链接命令。

我已尝试TARGET_LINK_LIBRARIES(../lib/special_lib/static_lib.a),它将被翻译为-l../lib/special_lib/static_lib.a。我也试过了TARGET_LINK_LIBRARIES(static_lib),但得到了-lstatic_lib并失败了。

1 个答案:

答案 0 :(得分:3)

如果您将绝对路径放到库中,它应该可以工作:

TARGET_LINK_LIBRARIES(your_binary /usr/local/lib/static_lib.a)

第二个选项:

ADD_LIBRARY(staticlib STATIC IMPORTED)
SET_TARGET_PROPERTIES(staticlib PROPERTIES IMPORTED_LOCATION /usr/local/lib/static_lib.a)
TARGET_LINK_LIBRARIES(your_binary staticlib)

导入/导出目标的官方CMake文档为here