【问题标题】:Ways to speed up build time? (C#/Unmanaged C++)加快构建时间的方法? (C#/非托管 C++)
【发布时间】:2009-07-29 19:00:55
【问题描述】:

我正在开发的旧版应用程序需要大约 2 小时来构建。该项目有大约 170 个项目,其中 150 个左右是非托管 C++,另外 30 个是 C#.Net 2.0。

有什么建议可以改善此类项目的构建时间?

【问题讨论】:

  • 之前有人问过类似的问题。搜索“incredibuild”以找到其中的一些。
  • 您是否需要经常从头开始构建它,还是增量构建很慢?
  • 我们经常需要从头开始构建。每当进行更改以进行 QC 处理时,我们都需要完整的构建。

标签: c# c++ msbuild .net-2.0 unmanaged


【解决方案1】:

专注于 C++ 项目 - 它们几乎肯定是构建时间消耗最多的项目。

关于缩短 C++ 构建时间的一些技巧:

  • 确保只包含 C++ 项目中需要的标头!
  • 尽可能在标头中使用前向声明,而不是包含其他标头
  • 尽可能使用 /MP 开关并行构建
  • 有效地使用抽象
  • 不要使用内联函数,因为这些函数在编译时成本更高
  • 获取正确的依赖关系,这样您就不会更频繁地构建所需的内容
  • 适当使用预编译的头文件

除此之外,如果您说的是 2 小时的构建时间,通常还有一个简单、便宜(从整体上看)的解决方案:

  • 升级硬件以帮助减少计算时间

【讨论】:

  • 100% 同意。你用什么编译器?查看合适的编译器缓存系统(例如 gcc 的 ccash)SSD 的构建服务器 mith 值得一看
  • 我主要使用MSVC,但上面的大多数参数都是通用的C++编译策略。不过,这个问题可能是特定于 MSVC 的,因为它混合了 C++ 和 C#。
【解决方案2】:

如果您在每台需要构建它的机器上安装IncrediBuild,它会将构建过程分配给所有机器。 如果您真的想只用硬件解决问题,您可以设置一些仅用作 IncrediBuild 客户端的专用机器。

在不同的规模上,确保您的每个项目都正确配置了预编译头文件。

【讨论】:

    【解决方案3】:

    您可以尝试分布式构建系统 Incredibuild:http://www.xoreax.com/visual_studio.htm

    【讨论】:

      【解决方案4】:

      您可以使用lint 之类的工具来查看您的 c++ 项目中是否有多余的包含文件。

      Games from Within 也有一篇关于此主题的精彩文章。

      【讨论】:

        【解决方案5】:

        为项目制定多个解决方案,仅包含项目的相关子集,并为发布等留下一个超级解决方案。

        【讨论】:

          猜你喜欢
          • 2013-03-24
          • 1970-01-01
          • 2010-12-25
          • 1970-01-01
          • 2010-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多