如何在所有可用内核上并行构建 CMake 项目?

jan*_*b04 8 concurrency optimization build cmake

这个相关问题展示了如何使用指定数量的核心构建 CMake 项目。例如,如果我想使用 10 个核心,我可以像这样调用 CMake:

cmake --build . -j 10
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何使用所有可用的核心进行构建。我实际上希望 CMake 自动检测我的核心数量并使用所有这些。

Ale*_*ing 17

从 CMake 3.22 开始,没有标准方法可以执行此操作。然而,有一些实用的方法。

  1. 如果您在任何平台上使用NinjaNinja Multi-Config生成器,只需运行构建cmake --build /path/to/build-dir即可使用所有内核。
  2. 如果您使用的是类似 UNIX 的命令行,则可以运行cmake --build . -j $(nproc)
  3. 如果您使用的是 Windows/cmd,则可以运行cmake --build . -j %NUMBER_OF_PROCESSORS%

  • 谢谢!我不知道使用 Ninja 生成器会自动处理这个问题。我将转而使用它,因为在我看来,这是这三个解决方案中最简单、最不容易出错且最面向未来的解决方案。 (2认同)