【问题标题】:How to build projects in parallel using Eclipse/CDT (not parallel compiling!)如何使用 Eclipse/CDT 并行构建项目(不是并行编译!)
【发布时间】:2011-07-05 15:32:43
【问题描述】:

我有几个项目都依赖于一个基本库。现在,当我更改这个基本库中的头文件时,我必须重建所有依赖项目。目前 Eclipse/CDT 一个接一个地构建项目。如何并行构建所有这些项目?

请注意,我已经为每个项目使用了 -j(并行编译)选项。但这还不够,因为:

  1. 确实有很多可用的 CPU(对于大多数项目来说,不仅仅是源文件)并且
  2. 由于并行编译,链接花费的时间比编译要长很多,并且(据我所知)不能使用多线程。

【问题讨论】:

  • xkcd.com/303 这是一个完美的借口,为什么要改变它? ;)
  • 所有依赖于你的库的项目是否可以反过来成为一个虚拟项目的依赖项,然后可以并行构建?还是我在这里遗漏了什么?
  • @Xeo:不能!等待!再长一点!
  • @vpit3833:重点是,eclipse 编译并链接项目 1,当它完成时比项目 2,而不是项目 3 ......当它编译时我有 ~40% 的负载(感谢-j 但仍然不是 100%,因为通常没有足够的源文件来保持所有内核忙碌)以及当它链接 ~5% 负载时(15 个空闲内核......)。所以总负载大约是 15%。但我天真的想法希望它在 100% 负载下快 6 倍:D
  • 你必须在eclipse中编译吗?也许如果您从命令行编译基本库,那么您可以简单地使用基本库对象启动多个线程(一些 makefile 魔术?)

标签: c++ eclipse eclipse-cdt


【解决方案1】:

我认为当前版本的 Eclipse CDT 不能并行构建项目,但您可以通过构建多个二进制文件(库和可执行文件)的 Eclipse CDT Makefile 项目来实现相同的效果。

生成此类项目的一种简单方法是使用CMakeEclipse CDT4 - Unix Makefiles 生成器。然后,如果您将/usr/bin/make -j<n> 指定为构建命令,其中n 是项目属性中的并行作业数,它将并行构建您的目标(不仅是源文件)。

【讨论】:

  • 我们从 Eclipse 托管构建迁移到用作生成器的 cmake,然后从 makefile 迁移到 ninja - 这两个决定都显着缩短了构建时间。
【解决方案2】:

项目属性 > C++ 构建 > 行为 > 启用并行构建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多