【发布时间】:2017-03-04 04:30:39
【问题描述】:
我试图让其他项目更容易链接到我们随项目分发的共享库。当我尝试利用 EXPORT 机制时,CMake 抱怨说我没有在导出集中包含用于构建共享库的静态库。这对我来说似乎没有必要,因为其他项目只需要链接到共享库,我真的不想安装静态库。这似乎与this bug 非常相似,但我可能只是误解了这一切是如何运作的。这是一个最小的例子:
CMAKE_MINIMUM_REQUIRED(VERSION 3.2.1)
PROJECT(ExportTest)
ADD_LIBRARY(myStaticLib STATIC staticLib.c)
ADD_LIBRARY(mySharedLib SHARED sharedLib.c)
TARGET_LINK_LIBRARIES(mySharedLib myStaticLib)
INSTALL(TARGETS mySharedLib EXPORT myExport DESTINATION lib)
INSTALL(EXPORT myExport DESTINATION include)
这会导致以下错误消息:
CMake Error: install(EXPORT "myExport" ...) includes target "mySharedLib"
which requires target "myStaticLib" that is not in the export set.
【问题讨论】:
-
因为在 Linux 上,默认情况下共享库不是“完整的”,当链接可执行文件时,仍然需要“传递”静态库。
标签: cmake shared-libraries static-libraries