当通过删除最终链接文件而不是.obj文件来使用增量构建时,构建过程似乎会快得多,但是会出现一些错误,例如无法加载.dll文件。从干净的构建开始,一切都正常。我使用TeamCity作为首选的CI系统。
也许增量构建行为在Visual Studio的后续版本中更好,这可能是升级的一个好动机?有人遇到类似的问题吗?
我实际上无法回答你的问题,但是如果你正在寻找加速构建的方法,这篇关于使用Visual Studio 2010和SSD进行快速构建的博客文章可能会有所帮助。http://qualapps.blogspot.com/2010/09/lightning-fast-builds-with-visual.html
我的经验是,特别是对于调试构建而言,瓶颈往往是磁盘IO。 压缩输出和中间文件目录有助于解决问题。 另外,我发现在不使用增量链接功能时(启用增量链接 - 否),某些构建速度更快。 考虑的另一个设置是关闭浏览信息生成(启用浏览信息 - 无)。 此外,不要忘记使用VS 2005的并行编译功能。由于通常是IO成为瓶颈,因此使用比CPU数量更多的构建线程会有所帮助。
我自己从未注意到这种行为,但我首先会怀疑链接时间代码生成。对于持续集成,您可以跳过它。
我还应该提到IncrediBuild。解决问题的方法之一是投入硬件资源,特别是您已经拥有的硬件资源。
好问题。
当我为 Microsoft Visual Studio 2003/2005/2008 的一个大型 C++ 项目组装 CI 系统时,我遇到了增量构建的问题。特别是在使用预编译头文件时,在所有情况下似乎都不能进行增量构建。如果有人能详细解释这一点,即什么有效而什么无效,我会很感兴趣听到。
在我的情况下,该项目从头开始构建需要超过一小时,因此为了获得合理的日内反馈速度,我最终进行了每晚清洁构建,这是发布构建,白天我则基于每晚的增量构建。这个方法效果还不错,只是增量构建没有正确捕捉到更改并重新编译所有必要的东西时会有问题。我尝试这种方法是因为我认为快速获取反馈非常重要,如果增量构建一个月或更少次数失败,我愿意接受这种妥协。
总的来说,我希望事情比我上面描述的更好,在其他项目中,如果有可能获得更多硬件并重新组织组件以并行构建,我通常会进行完全重新构建。如果你能并行构建,你可以极大地加速构建。
其他需要考虑的事项:
有很多方法可以加快构建速度,在大多数情况下,我会考虑这些是增量构建。