C ++增量构建用于持续集成

时间:2011-03-11 07:32:06

标签: c++ visual-c++ build-automation incremental-build

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

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

在Visual Studio的更高版本中,增量构建行为可能更好,它可能是升级的好动力吗?有没有人遇到过类似的问题?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

我还应该提到IncrediBuild。抛出问题的硬件,特别是你已经拥有的硬件,是一个快速的胜利。

答案 3 :(得分:1)

好问题。

当我为Microsoft Visual Studio 2003/2005/2008组建一个用于大型C ++项目的CI系统时,我发现了增量构建的问题。特别是在使用预编译的头文件时,似乎无法在所有情况下进行增量构建。如果有人对此有详细解释,即有效和无效,我会感兴趣。

在我的情况下,该项目花了一个多小时从头开始构建,所以为了在一天内获得一些合理的反馈速度,我最终做了一个干净的夜间构建,这是发布构建,并且在日期我使用了增量构建基于每晚。除了增量构建无法正确获取更改并重新编译所有必要事项的情况外,这种方法效果相当不错。我尝试了这种方法,因为我认为快速获取非常重要的反馈,如果增量构建每月或更少失败一次,我就准备接受这种反应。

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

需要考虑的其他事项是:

  • 包括与前瞻性声明
  • 模板用法
  • 事物之间的一般依赖
  • 将部分项目作为独立的图书馆取出,甚至可以预建。

为了更快地构建,可以做很多事情,在大多数情况下,我会将这些视为增量构建。