首页 文章

Cmake:覆盖子目录链接模式为LINK_PRIVATE

提问于
浏览
0

我有一个非常大的第三方cmake目录作为我的项目的一部分,我的一些项目依赖 . 我使用add_subdirectory()将此目录导入到我的依赖项目中 . 不幸的是,这也导入了第三方项目链接到我的项目的库 .

我可以通过在target_link_libraries()命令的第三方目录的cmakelists.txt文件中指定LINK_PRIVATE来手动修复此问题 . 我更喜欢使用set_property或类似功能从cmakelists中远程执行此操作 .

这可能吗?

1 回答

  • 1

    一般来说,使用_1265470时这样的效果很难控制 . 除了构建目标之外,您还可能会对全局和缓存变量,测试和其他位置产生类似的污染影响,这就是为什么我不建议将此方法用于第三个库依赖项 .

    ExternalProject模块提供了一种更清洁的方法 . 这为您提供了一个命令 ExternalProject_Add ,可用于配置和构建具有CMake(或其他构建系统)的第三方库 . 这里的优点是图书馆的CMake运行完全独立于您自己,因此没有污染影响 . 缺点是该库中的任何目标都不会自动导入到您自己的项目中,因此您可能需要一些额外的胶水代码才能让它们重新进入 . 但总的来说,这应该是一种更清洁的方法 .

相关问题