我无法使用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
。
答案 0 :(得分:6)
您无法直接将库链接到库中。
有些编译器允许你这样做(例如MS Visual Studio有一个选项),但其他编译器没有,这就是为什么CMake也不允许它。请参阅this answer了解您的选择。
答案 1 :(得分:0)
target_link_libraries(my_target PRIVATE lib_name${CMAKE_STATIC_LIBRARY_SUFFIX})
我有libpq.a
和libpq.so
(postgres),通过此解决方案,它链接到静态库,因此我可以在干净的操作系统上执行my_target
。