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