使用CMake链接静态库

3

我无法使用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 中。


项目结构是什么样子的?你收到了什么错误信息?可能是因为你没有在调试模式下编译吗? - ToniBig
2个回答

11

直接将库链接到库是不可行的。

有些编译器允许您执行此操作(例如,MS Visual Studio有一个选项),但是其他编译器则不允许,因此CMake也不允许这样做。请参见此答案以了解如何处理此问题的选项。


1
target_link_libraries(my_target PRIVATE lib_name${CMAKE_STATIC_LIBRARY_SUFFIX})

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接