C++ 增量构建以实现持续集成

Can*_*cer 5 c++ build-automation visual-c++ incremental-build

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

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

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

mur*_*att 1

好问题。

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

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

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

其他需要考虑的事项是:

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

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