我开发/维护一个需要很长时间才能构建的应用程序(例如,完整构建需要超过6个小时!)在花了一天的大部分时间构建我们的应用程序之后,我开始研究改进构建时间的方法。关于堆栈溢出问题的建议如下:
我想知道更多关于如何为MSBuild / Visual构建系统执行第三个选项(分布式构建)。
发布于 2009-11-05 16:23:18
去看一看http://www.xoreax.com/为Incredibuild。它不是免费的,但我们使用它,它是相当令人印象深刻的。它很好地集成到Visual中,并且非常容易使用。你有时会遇到问题,但绝对值得一看。
一旦安装好了,在Visual中,原则是使用“BuildSolutionwithIn可信build”菜单条目,而不是使用"Build“菜单项。所有需要的文件都透明地传输到远程计算机,输出文件被下载回来。
发布于 2009-11-05 17:35:53
在过去的十年中,我花了太多的时间让C++构建更快,并行构建可以创造奇迹,但是简单的事情有时会带来惊人的不同。
你没有详细说明,所以我会问.
这个项目的规模有多大?我过去使用过的一个度量指标是,平均每一个源模块(.cpp)有多少个源文件等。源从200到超过32,000 (不是一个错误!)在我的过去,这是一个很好的度量标准。
您的构建机器的规格是什么,它只是一台构建机器,还是同时用于其他工作?愚蠢的缓慢硬盘驱动器,内存太少,其他进程使用;所有可能造成灾难性的影响建设时间。
您正在构建单块静态库和应用程序吗?如果是这样的话,有时转换到DLL文件将导致更低的整体构建时间,因为它将减少单个链接单元的大小。对于具有链接时代码生成的优化构建来说,情况尤其如此。
您的项目是否有效地使用预编译头?如果您的项目被设置为自动生成预编译头,那么我的断言是,您应该关闭所有预编译头的使用来测试构建。在Visual Studio 2003和Visual Studio 2005中,我发现这实际上比自动生成更快、更可靠。正确的预编译头(只由一个文件生成,并由所有其他文件使用)似乎是最佳构建速度的过程。可悲的是,这是一个真正的黑色艺术和一些尝试和错误,以获得最佳的PCH内容,为一个给定的项目-和这些内容不一定是稳定的整个项目的生命。
除了你的并行追求之外,上面的这些东西只会有帮助。
发布于 2009-11-05 16:36:11
研究将项目分成多个可以独立构建的项目的可行性。您可以有一个UI项目、一个数据访问层的DLL项目、业务逻辑等等。这将使调试变得更加容易,并且使您的项目的结构更适合于分布式构建。
https://stackoverflow.com/questions/1681677
复制相似问题