首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMAKE并行构建问题

CMAKE并行构建问题
EN

Stack Overflow用户
提问于 2019-03-23 16:00:41
回答 1查看 954关注 0票数 0

我有外部项目,这是基于,我能够成功编译链接。(我已经修改了第三方项目的make infra,将大make分解为多个小make,以便并行不同的小make可以运行,但它与这个问题是正交的)

第三方cmake如下

代码语言:javascript
复制
External_Project_Add( ...
             ....
             #NO BUILD_COMMAND) 

但是编译太慢了,我可以看到编译的最大数量不超过8个线程,CPU利用率约为20%。(我们也在使用distcc )。如果我按如下方式进行更改

代码语言:javascript
复制
External_Project_Add( ...
             ....
         BUILD_COMMAND ${CMAKE_COMMAND} --build <dir> --parallel --)

编译速度要快至少3倍。但是,偶尔系统会用完PID。

有没有办法控制CMAKE可用的PID/进程的最大数量?

我曾经考虑过在BUILD_COMMAND中使用-j选项,但它会人为地减少我的系统可用的编译计算量。

我尝试在我的第三方make中修改$(MAKE)来拥有-jn,但是随后它显示了jservicor域警告。这不是一个好主意,以改变第三方制造商以及。所以我放弃了这个想法。

如有任何帮助,我们不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-03-23 21:04:27

代码语言:javascript
复制
$ 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>来限制请求作业的最大数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55311820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档