使用CMake链接静态库

时间:2013-09-19 17:18:53

标签: linker cmake static-linking

我无法使用CMake将库${static_library}静态链接。我已尝试对路径进行硬编码,据我所知TARGET_LINK_LIBRARIES应自动链接此路径。

ADD_LIBRARY(libraryA STATIC ${source_files})
TARGET_LINK_LIBRARIES(libraryA debug ${static_library})

有一个子项目稍后在构建

中链接libraryA
ADD_EXECUTABLE(testA ${test_sources}) 
TARGET_LINK_LIBRARIES(testA libraryA)

已正确链接$ {static_library},但我需要${static_library}直接链接到libraryA

2 个答案:

答案 0 :(得分:6)

您无法直接将库链接到库中。

有些编译器允许你这样做(例如MS Visual Studio有一个选项),但其他编译器没有,这就是为什么CMake也不允许它。请参阅this answer了解您的选择。

答案 1 :(得分:0)

target_link_libraries(my_target PRIVATE lib_name${CMAKE_STATIC_LIBRARY_SUFFIX})

我有libpq.alibpq.so(postgres),通过此解决方案,它链接到静态库,因此我可以在干净的操作系统上执行my_target