【问题标题】:Link static library using CMake使用 CMake 链接静态库
【发布时间】:2013-09-19 17:18:53
【问题描述】:

我无法让库 ${static_library} 使用 CMake 进行静态链接。我已经尝试对路径进行硬编码,据我所知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

【问题讨论】:

  • 项目结构是什么样的,您收到了哪些错误消息?难道是你没有在调试模式下编译?

标签: linker cmake static-linking


【解决方案1】:

您不能将库直接链接到库中。

一些编译器允许您这样做(例如 MS Visual Studio 有一个选项),但其他编译器不允许这样做,这就是 CMake 也不允许这样做的原因。请参阅this answer,了解您有哪些选择来处理这个问题。

【讨论】:

    【解决方案2】:
    target_link_libraries(my_target PRIVATE lib_name${CMAKE_STATIC_LIBRARY_SUFFIX})
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2013-10-09
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多