build - 如何导出目标,然后通过 ExternalProject 在另一个项目中使用它?
问题描述
我有一个名为 的 CMake 项目proj1
,我想将其用作另一个项目中的外部项目proj2
。proj1
现在, 's中的(相关)命令CMakeLists.txt
是:
install(
TARGETS proj1
ARCHIVE
DESTINATION lib
EXPORT proj1_library
INCLUDES DESTINATION include
CONFIGURATIONS Release RelWithDebugInfo
)
我想在 中使用这个静态库proj2
,而不是明确地“猜测”它的安装位置proj1
。我希望能够从中获取此目标proj1
(我使用 获取),然后在命令ExternalProject
中直接或间接使用它。add_target_libraries()
我该怎么做?而且-我只需要对 's 进行更改proj2
还是对proj1
's进行更改CMakeLists.txt
?
解决方案
导出目标是正确的方法。
为了支持这一点,proj1
必须proj1Config.cmake
在其构建树和安装树中生成一个(以便可以将开发包proj1
用作 SDK [1])
我建议您阅读 CMake 文档的以下部分,它涵盖了不同的概念并提供了一个示例。见https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages
[1] SDK:https ://en.wikipedia.org/wiki/Software_development_kit
推荐阅读
- javascript - 如何使用没有 DOM 的简单 JavaScript 在 Quill 中设置粗斜体下划线?
- openshift - OKD 与 OCP 上的 VSphere CSI 驱动程序
- ruby - .length 返回 (NoMethodError) ruby 版本 2.7.0p0
- jsp - 如何在 EL 中将动态变量与表行一起使用
- javascript - 使用 Javascript 检测文本字段中的特定更改
- java - 使用 STANDARD_ERROR 在 gradle 出口上运行单个 JUnit5 测试
- nginx - 使用 nginx.ingress.kubernetes.io/rewrite-target 给出“默认后端 - 404”
- node.js - 我们可以修改来自 AWS Cognito 的错误响应吗?
- java - 在 Micronaut 中获取多个数据源的 EntityManager 的特定实例
- python - 我应该如何从有多个主机的日志文件中提取数据,然后将提取的数据以 csv 格式保存到共享位置?