当他们的安装目标搞砸时,引用ExternalProjects会很痛苦。因此,在为给定项目生成主项目文件之前,可能需要构建和安装一次ExternalProjects。是否可以使用CMake以及如何操作?
答案 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_DIR
,BINARY_DIR
,INSTALL_DIR
。你有两种方法可以实现:
使用configure_file
为 other_project 创建 CMakeLists.txt ,从主项目调用(execute_process
命令之前)。
将主要项目中的变量作为-D
参数传递给${CMAKE_COMMAND}
。