MSBuild/Visual Studio分布式构建

Jus*_*tin 13 c++ msbuild

我开发/维护一个需要很长时间才能构建的应用程序(例如,完整构建需要花费超过六个小时!).在花了大部分时间构建我们的应用程序之后,我开始研究改进构建时间的方法.Stack Overflow问题的建议如下:

  • 修复编译警告
  • Unity构建(面向开发人员)
  • 分布式构建

我想更多地了解如何为MSBuild/Visual Studio构建系统执行第三个选项(分布式构建).

Ben*_*oît 16

请访问http://www.xoreax.com/获取Incredibuild.它不是免费的,但是我们使用它并且非常令人印象深刻.它与Visual Studio完美集成,使用起来非常简单.你可能偶尔遇到问题,但绝对值得一看.

一旦安装完成,在Visual Studio中,原则是使用"使用Incredibuild构建解决方案"菜单条目而不是"构建解决方案".所有需要的文件都透明地传输到远程计算机,然后下载输出文件.


小智 7

在过去的十年中,我花了太多时间使C++构建变得更快,并行构建可以创造奇迹,但简单的事情有时会产生惊人的差异.

你没有说明很多细节,所以我会问......

项目的规模是多少?多少源文件等.我过去使用的度量标准是每个源模块(.cpp)平均定位一秒.从200到32,000(不是拼写错误!)行的来源,这在我过去作为衡量标准运作良好.

您的构建机器的规格是什么,它只是一台构建机器还是同时用于其他工作?傻慢的硬盘,太少的RAM,其他过程使用; 所有这些都会对建造时间造成灾难性影响.

您是在构建单片静态库和应用程序吗?如果是这样,有时转换为DLL文件将导致较低的总体构建时间,因为它将使各个链接单元的数量下降.对于使用链接时代码生成的优化构建尤其如此.

您的项目是否有效地使用预编译头?如果您的项目设置为自动生成预编译头,那么我断言您应该通过关闭所有预编译的头文件使用来测试构建.在Visual Studio 2003Visual Studio 2005中,我发现这实际上比自动生成更快,更可靠.正确的预编译头文件(由一个仅执行该文件并由所有其他文件使用的文件生成)似乎是最佳构建速度的过程.遗憾的是,它是一种真正的黑色艺术,并且在某个特定项目中获得最佳PCH内容有些​​反复试验 - 并且该内容在项目的生命周期内不一定是稳定的.

除了并行性任务之外,上述内容只会有所帮助.