【问题标题】:Two subprojects A and B, A depends on B and checks for features present in B两个子项目 A 和 B,A 依赖于 B 并检查 B 中存在的功能
【发布时间】:2020-04-11 07:17:35
【问题描述】:

我正在尝试创建一个集成了 2 个子项目的 CMake 项目,特别是 botanrnpgp。 rnpgp 的构建系统是基于 CMake 的,botan 使用 Python 配置脚本生成 Makefile。 问题在于,在 CMake 运行期间,rnpgp 检查 botan 中的功能,因此它需要一个已编译的 botan 库。但是,直到我实际调用 make 之后,botan 才被构建,我不能这样做,因为 rnpgp 无法配置,因为 botan 尚未构建。

在 CMake 中指定这种依赖关系的正确方法是什么?

【问题讨论】:

  • 你有一些代码可以分享并告诉我们问题出在哪里吗?
  • 我基本上想做的是在未安装 botan 的系统上构建基于 cmake 的 rnpgp。就是这样。

标签: cmake dependencies botan


【解决方案1】:

您可以使用 CMake 的 execute_process() 运行 botan Python 脚本并在 CMake 配置阶段运行 make。这样,botan 库将被构建并在运行 mpgp CMake 时可供参考:

# Run the Python script to configure the botan Makefile.
execute_process(COMMAND
    python ${CMAKE_SOURCE_DIR}/botan/configure.py
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
)
# Run 'make' from the botan directory where the 'Makefile' was created.
execute_process(COMMAND
    make
    WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/botan/build"
)

这是一个大概的例子。您可能需要稍微修改路径以匹配系统上的 botan 位置以及 botan 生成其构建工件的位置(即 Makefile 的位置)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-29
    • 2017-04-06
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2010-12-08
    • 2015-08-08
    • 2021-10-06
    相关资源
    最近更新 更多