4

我们在 VS2005 中构建了一个相当大的 C++ 项目,从头开始编译和构建可能需要 40 分钟,安装程序需要另外 10 分钟,因为该软件是在 32 位和 64 位配置中构建的。我想将这段时间减少到至少 10 分钟左右,因为我觉得在使用持续集成时获得快速构建反馈很重要。

当通过删除最终链接文件而不是 .obj 文件来使用增量构建时,构建过程似乎要快得多,但是似乎到处都会弹出错误,例如无法加载 .dll。从干净的构建开始,一切正常。我使用 TeamCity 作为 CI 系统的选择。

也许在更高版本的 Visual Studio 中增量构建行为会更好,这可能是升级的一个很好的动机?有没有人遇到过类似的问题?

4

4 回答 4

2

我实际上无法回答您的问题,但由于您正在寻找加快构建速度,这篇关于使用 Visual Studio 2010 和 SSD 进行快速构建的博文可能会有所帮助。http://qualapps.blogspot.com/2010/09/lightning-fast-builds-with-visual.html

于 2011-03-11T07:43:54.200 回答
1

好问题。

当我为 Microsoft Visual Studio 2003/2005/2008 的大型 C++ 项目构建 CI 系统时,我发现增量构建也存在问题。尤其是在使用预编译头文件时,似乎并非在所有情况下都可以进行增量构建。我很想听听有人对此有详细的解释,即什么有效,什么无效。

就我而言,该项目从头开始构建需要一个多小时,因此为了获得合理的日内反馈速度,我最终做了一个干净的夜间构建,即发布构建,而当天我使用了基于每晚。这工作得相当好,除了增量构建无法正确获取更改并重新编译所有必要内容的情况。我尝试了这种方法,因为我认为快速获得反馈非常重要,如果增量构建每月失败一次或更少,我已经准备好接受妥协。

一般来说,我喜欢比我上面描述的更好的东西,所以在其他项目中可以获得更多硬件并重新组织要并行构建的组件,我通常会进行完整的重新构建。如果您可以并行构建,则可以加快构建速度。

其他需要考虑的事项是:

  • 包含与前向声明
  • 模板使用
  • 事物之间的一般依赖关系
  • 将部分项目作为独立库取出,甚至可以预先构建。

可以做很多事情来加快构建速度,在大多数情况下,我会将这些视为增量构建。

于 2011-03-11T09:24:35.557 回答
1

我的经验是,通常,尤其是调试版本,瓶颈是磁盘 IO。它有助于压缩输出和中间文件目录。此外,我看到一些构建在不使用增量链接功能时更快(启用增量链接 - 否)。要考虑的另一个设置是关闭浏览信息生成(启用浏览信息 - 无)。此外,不要忘记使用 VS 2005 的并行编译功能。由于通常 IO 是瓶颈,因此使用比 CPU 更多的构建线程会有所帮助。

于 2011-03-11T08:40:05.617 回答
1

我自己从来没有注意到这种行为,但我首先会怀疑链接时间代码生成。对于持续集成,您可以跳过它。

我还应该提到 IncrediBuild。在问题上投入硬件,尤其是你已经拥有的硬件,是一个快速的胜利。

于 2011-03-11T08:45:27.497 回答