在构建 CMake 项目时(例如在 Windows 上),我可以通过执行以下命令来执行并行构建:
cmake --build . -- /m
/m 开关被传递给 msbuild,我得到并行构建。但是,如果我的 CMakeLists 中有一些外部项目,则该开关不会传递给它的构建命令。
确保并行构建我的 ExternalProject 的最佳方法是什么?如果可以避免,我不想硬编码 BUILD_COMMAND。
在构建 CMake 项目时(例如在 Windows 上),我可以通过执行以下命令来执行并行构建:
cmake --build . -- /m
/m 开关被传递给 msbuild,我得到并行构建。但是,如果我的 CMakeLists 中有一些外部项目,则该开关不会传递给它的构建命令。
确保并行构建我的 ExternalProject 的最佳方法是什么?如果可以避免,我不想硬编码 BUILD_COMMAND。
在CMake 3.12中,添加了支持以从 cmake 中启动并行作业。
以前的版本仅通过 -- 之后的传递参数支持这一点,可以理解的是,它不会传递到外部构建。虽然,我不确定新的支持是否适用于 ExternalProject,如果它有效,尝试并报告回来会很棒!
我对基于 make 的 external_projects 有同样的问题。我最终找到了-j8
通过 cmake 缓存变量传递标志的解决方案。
set(EXTERNAL_BUILD_ARGS "/m" CACHE STRING "flags for external project builds")