如何进行并行的CMake ExternalProject构建

3

在构建 CMake 项目时(例如在 Windows 上),我可以通过执行以下命令来进行并行构建:

cmake --build . -- /m

/m开关被传递给msbuild,从而实现了并行构建。但是,如果我的CMakeLists中有一些外部项目,该开关将不会传递到其构建命令。
最好的方法是确保我的ExternalProject是并行构建的。如果可能的话,我不想硬编码BUILD_COMMAND。
2个回答

1
CMake 3.12 中,支持从 cmake 中启动并行作业。
以前的版本只支持通过 -- 后面的透传参数来实现这一点,但显然不会传递到外部构建。虽然我不确定新的支持是否适用于 ExternalProject,但如果能尝试并报告是否有效,那将是很好的!

0

我在使用基于make的外部项目时遇到了同样的问题。最终,我通过cmake缓存变量传递-j8标志来解决了这个问题。

set(EXTERNAL_BUILD_ARGS "/m" CACHE STRING "flags for external project builds")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接