如何从命令行设置CMake构建中的线程数?

bru*_*iuz 38 cmake

cmake --build . --config Release
Run Code Online (Sandbox Code Playgroud)

是否可以设置可以参与构建过程的核心数量?

与GNU make类似的东西-j.

usr*_*567 40

您可以使用任意参数传递给本机构建工具--.之后的所有内容都--将传递给构建工具.传递-j 3你的例子,只需使用

cmake --build . --config Release -- -j 3
Run Code Online (Sandbox Code Playgroud)

文档:https://cmake.org/cmake/help/v3.5/manual/cmake.1.html

您还可以使用Ninja作为构建工具,它会自动使用适当数量的线程.或者您可以通过定义来修改make命令CMAKE_MAKE_PROGRAM="make -j 3.但这是一个相当hacky的解决方法.

  • 是否有独立于构建工具的方法来执行此操作? (3认同)
  • 不,`--`之后的所有内容都传递给构建工具。也许您的构建工具接受相同的选项,但是总的来说,我对此表示怀疑。 (2认同)
  • Windows (cmake 3.7) 和 Ubuntu (cmake 3.9) 都报告 -j 不是一个选项。难道我做错了什么? (2认同)
  • 我在 Windows 上的 Ubuntu Bash 上使用“-j”的经验:线程限制越高,我得到的有关丢失文件的随机编译错误就越多。这似乎与 Windows 上的“make”不能完美配合。 (2认同)

usr*_*567 23

根据发行说明,使用CMake 3.12可以跨平台完成:

生成工具模式()升和选项来指定一个并行构建级别.它们映射到本机构建工具的相应选项.cmake(1) cmake –build--parallel [<jobs>]-j [<jobs>]