CMAKE Parallel Build问题

问题描述 投票:0回答:1

我有基于make的外部项目,我能够成功编译链接。 (我已经修改了第三方项目的make infra来打破多个较小的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域警告。改变第三方制作也不是一个好主意。所以我放弃了这个想法。

任何帮助表示赞赏!

cmake
1个回答
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>来限制所请求作业的最大数量。

© www.soinside.com 2019 - 2024. All rights reserved.