我有一个基于make的外部项目,我能够成功编译链接。 (我修改了第三方项目的make infra,将大型make分成多个较小的make,以便可以并行运行不同的小型make,但这与这个问题正交)
第三方cmake如下
External_Project_Add( ...
....
#NO BUILD_COMMAND)
但是编译速度太慢,我可以看到最大编译数量不超过8个线程,CPU利用率约为20%。 (我们也使用distcc)。 如果我更改如下
External_Project_Add( ...
....
BUILD_COMMAND ${CMAKE_COMMAND} --build <dir> --parallel --)
编译速度至少快3倍。但是,有时系统会用完PID。
是否可以控制CMAKE可用的最大PID /进程数?
我曾考虑过使用-j选项是BUILD_COMMAND,但是它会人为地减少可用于我的系统的编译计算量。
我尝试将我的第三方make中的$(MAKE)更改为-jn,但随后显示Jobserver域警告。改变第三方品牌也不是一个好主意。所以我放弃了这个主意。
感谢您的帮助!
答案 0 :(得分:0)
$ cmake --build . --help
Unknown argument --help
Usage: cmake --build <dir> [options] [-- [native-options]]
Options:
-j [<jobs>] --parallel [<jobs>] = Build in parallel using
the given number of jobs. If <jobs> is omitted
the native build tool's default number is used.
The CMAKE_BUILD_PARALLEL_LEVEL environment variable
specifies a default parallel level when this option
is not given.
cmake
将-j
和-j <jobs>
请求传递给构建工具。 cmake --build
将根据使用的生成器运行适当的构建工具,并将添加正确的选项以运行并行构建。因此,只需使用-j <jobs>
来限制请求的作业的最大数量。