两个子项目A和B,A依赖于B,并检查B中是否存在功能

时间:2019-12-18 17:12:35

标签: cmake dependencies botan

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用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的位置)。