3

我无法让库${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.

4

2 回答 2

11

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

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

于 2013-09-20T07:24:37.060 回答
1
target_link_libraries(my_target PRIVATE lib_name${CMAKE_STATIC_LIBRARY_SUFFIX})

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

于 2018-05-23T08:22:45.027 回答