正确的链接命令是
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
并失败了。
答案 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。