加快构建时间的方法? (C#/非托管 C++)
Posted
技术标签:
【中文标题】加快构建时间的方法? (C#/非托管 C++)【英文标题】:Ways to speed up build time? (C#/Unmanaged C++) 【发布时间】:2009-07-29 19:00:55 【问题描述】:我正在开发的旧版应用程序需要大约 2 小时来构建。该项目有大约 170 个项目,其中 150 个左右是非托管 C++,另外 30 个是 C#.Net 2.0。
有什么建议可以改善此类项目的构建时间?
【问题讨论】:
之前有人问过类似的问题。搜索“incredibuild”以找到其中的一些。 您是否需要经常从头开始构建它,还是增量构建很慢? 我们经常需要从头开始构建。每当进行更改以进行 QC 处理时,我们都需要完整的构建。 【参考方案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】:为项目制定多个解决方案,仅包含项目的相关子集,并为发布等留下一个超级解决方案。
【讨论】:
以上是关于加快构建时间的方法? (C#/非托管 C++)的主要内容,如果未能解决你的问题,请参考以下文章
在托管进程中使用 EventWaitHandle 和在非托管进程中使用 WaitForSingleObject 进行跨进程同步
让非托管 c++ 代码调用调用 c# 代码的托管 c++ 代码