我有外部项目,这是基于,我能够成功编译链接。(我已经修改了第三方项目的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/进程的最大数量?
我曾经考虑过在BUILD_COMMAND中使用-j选项,但它会人为地减少我的系统可用的编译计算量。
我尝试在我的第三方make中修改$(MAKE)来拥有-jn,但是随后它显示了jservicor域警告。这不是一个好主意,以改变第三方制造商以及。所以我放弃了这个想法。
如有任何帮助,我们不胜感激!
发布于 2019-03-23 21:04:27
$ 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>来限制请求作业的最大数量。
https://stackoverflow.com/questions/55311820
复制相似问题