如何在配置主要项目的同时构建cmake ExternalProject?

时间:2016-05-31 18:39:37

标签: c++ cmake external

当他们的安装目标搞砸时,引用ExternalProjects会很痛苦。因此,在为给定项目生成主项目文件之前,可能需要构建和安装一次ExternalProjects。是否可以使用CMake以及如何操作?

1 个答案:

答案 0 :(得分:5)

您可以在cmake内使用execute_process调用来配置和构建包含ExternalProject的CMake项目:

<强> other_project /的CMakeLists.txt

project(other_project)
include(ExternalProject)

ExternalProject_Add(<project_name> <options...>)

<强>的CMakeLists.txt

execute_process(
    COMMAND ${CMAKE_COMMAND} --build . ${CMAKE_SOURCE_DIR}/other_project
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/other_project
)

这样的方式 other_project 将在目录--build中配置和构建(因为${CMAKE_BINARY_DIR}/other_project选项)。如果您未在ExternalProject_Add调用中禁用安装,则会在构建 other_project 时执行此操作。

通常,您希望从主项目中的变量推导出一些外部项目选项,如SOURCE_DIRBINARY_DIRINSTALL_DIR。你有两种方法可以实现:

  1. 使用configure_file other_project 创建 CMakeLists.txt ,从主项目调用(execute_process命令之前)。

  2. 将主要项目中的变量作为-D参数传递给${CMAKE_COMMAND}