是否有一种方法来配置 CMake,以便单个
make
命令将启动主机和目标构建?我有一个项目要在目标平台上运行,但需要从需要在主机平台 (PC) 上运行的 generator
生成一些数据。从 CMake 的文档 和环顾四周,我需要一个 2 遍构建 - 首先主机创建生成器,然后是目标交叉编译构建。我的问题具体是如何通过 CMake 配置使用单个 make
命令启动 2 遍构建(不使用外部 bash 或 python 脚本)。
我所知道的事情
将我的评论变成答案
假设您有一个用于主机构建工具的
buildTool
子目录:
buildTools\CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(BuildTools)
add_executable(genfoo genfoo.cpp)
然后你可以有一个主要的:
CMakeLists.txt
if (CMAKE_CROSSCOMPILING)
set(_genfoo "bin/genfoo${CMAKE_EXECUTABLE_SUFFIX}")
add_custom_command(
OUTPUT ${_genfoo}
COMMAND ${CMAKE_COMMAND}
-DCMAKE_BUILD_TYPE:STRING="Release"
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE:PATH="${CMAKE_BINARY_DIR}/bin"
-B"bin"
-H"${CMAKE_SOURCE_DIR}/buildTools"
COMMAND ${CMAKE_COMMAND} --build bin --config Release
)
else()
set(_genfoo genfoo)
add_subdirectory(buildTools)
endif()
add_custom_command(
OUTPUT foo.h
COMMAND ${_genfoo}
DEPENDS ${_genfoo}
)
add_executable(bar bar.cpp foo.h)
target_include_directories(bar PRIVATE ${CMAKE_BINARY_DIR})
参考文献