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

Duc*_*een 3 c++ cmake external-project

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

Tsy*_*rev 5

您可以使用cmakecall execute_processin来配置和构建包含ExternalProject的CMake项目:

other_project/CMakeLists.txt:

project(other_project)
include(ExternalProject)

ExternalProject_Add(<project_name> <options...>)
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt:

execute_process(
    COMMAND ${CMAKE_COMMAND} --build . ${CMAKE_SOURCE_DIR}/other_project
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/other_project
)
Run Code Online (Sandbox Code Playgroud)

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

通常情况下,你需要一些选项ExternalProject,像SOURCE_DIR,BINARY_DIR,INSTALL_DIR,从变量在主项目推出.您有以下两种方式:

  1. 创建的CMakeLists.txtother_projectconfigure_file,称为从主体工程(前execute_process命令).

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