完全构建和部分构建时?

时间:2011-12-14 17:34:27

标签: c++ build incremental-build

您好我正在尝试找出何时需要完整构建以及何时部分构建已足够。 有许多艺术品,但我无法找到具体的答案。

以下是我的想法

在以下情况下需要完整构建:

1.改变依赖模块的构建。

---更改构建选项或使用优化技术。

2.对象布局的变化:

--- headder文件中的任何更改,在类中添加和删除新方法。

---通过添加或删除变量或虚函数来改变对象大小。

---使用pragma pack更改数据对齐。

3.全局变量的任何变化

在以下情况下,部分构建就足够了:

1.只要不改变指定的接口

,就可以对逻辑进行任何更改

2.改变堆栈变量

1 个答案:

答案 0 :(得分:1)

在理想世界中,永远不需要完整构建,因为所有构建工具都会自动检测其中一个依赖项是否已更改。

但这只适用于理想世界。实际构建工具由人类和人类编写

  • 制造失败,因此工具可能不会考虑所有可能的变化,
  • 是懒惰的,因此工具可能不会考虑任何变化。

对您而言,这意味着您必须具备构建工具的一些经验。使用良好的书面makefile可能会考虑到所有内容,而您很少需要完整构建。但是在21世纪,制作文件不再是现有技术,它们很快变得复杂。今天的开发环境在查找依赖项方面做得相当不错,但是对于较大的项目,您可能会有依赖项,这些依赖项难以置于开发环境的概念中,您将编写脚本。

所以你的问题没有真正的答案。在实践中,最好为每个版本进行完全重建,然后只需按一个按钮即可完成重建。并且为日常工作做部分构建,因为没有人想等待2个小时来查看代码是否可编译。但即使在日常工作中,有时也需要完全重建,因为链接器/编译器/(您在此处选择的工具)甚至无法识别最简单的更改。