你好,开发者朋友,我现在使用CMake有一段时间了,但是我不知道如何安装目标:
- 属于导出集的一部分
- 与接口库进行私人链接
导出集是使用以下命令创建的
install(EXPORT MyExportSet DESTINATION MyExportDir
NAMESPACE Project FILE ProjectTargets.cmake)
到接口库的链接是这样完成的
target_link_libraries(exportedTarget
PRIVATE interfaceTargetLibrary
)
最后我导出的目标是这样的:
install(TARGETS exportedTarget EXPORT MyExportSet
ARCHIVE DESTINATION lib/static
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
这看起来对我来说是正确的,并且遵循PRIVATE标记upon链接的逻辑,我不应该导出目标interfaceTargetLibrary
但是CMake给我一个错误(这个)
CMake Error: install(EXPORT "ProjectTargets" ...) includes target"exportedTargets" which requires target "interfaceTargetLibrary" that is not in the export set.
所以我的问题是,这是一个bug吗?还是我不明白的东西?很明显,你是否以某种方式实现了它。
我用的是CMake 3.7版。
编辑:找到了,如果有人感兴趣。这是因为,私人链接的库不会被打包在我导出的一个。所以,库的压缩机将需要,链接对接口TargetLibary
所以我也需要导出它。
1条答案
按热度按时间fwzugrvs1#
由于它是私人链接,您可以使用以下技巧:CMake won't try to install an
IMPORTED
library。另请参阅"What is an
INTERFACE IMPORTED
library in CMake and what are its uses?"。我试图找到关于这种行为的官方文件,但我找不到。不过我确实找到了a related discussion ticket on kitware's repo。