运行时错误是否在重建时消失,表明构建系统中存在错误?

时间:2017-02-17 12:10:22

标签: language-lawyer rebuild build-system

我们都听过了 - "尝试一个干净的构建,看看它是否有效"。通常,奇怪的运行时错误将在重建后消失。这让我觉得 - 正确跟踪依赖关系是构建系统的工作。

构建系统中的此类运行时错误定义错误 - 无论是make还是msbuild,还是以其中任何一个为准。或者换句话说,如果一个干净的构建和一个正常的构建产生不同的结果,那么根据定义是构建系统中的一个错误吗?

编辑:我假设the build environment is sane - 意味着当文件更新时,他们的"最后一次修改"时间戳变得更新(而不是更旧的时间戳或相同)。实际上,我所知道的所有版本控制系统都遵循该规则,否则它们会破坏像Make这样的构建系统,它依赖于时间戳来跟踪需要更新的文件。

1 个答案:

答案 0 :(得分:1)

构建系统可以针对性能或完整性进行优化。

重建所有是完整性构建。

部分重建失败的原因是

  • 不正确的知识。构建了一个库,但是碎片化的构建系统无法理解整体的依赖性。
  • 缺少依赖项。虽然可以理解标头与c代码的直接依赖关系,但是会遗漏间接依赖关系。
  • 编辑并继续错误编译。部分构建mid了解代码更改的后果,并且不会重新编译。

所有这些错误都被优势所抵消

  • 维护make文件更简单
  • 更快的编译
  • 更快的bug转身

你需要自己判断价值所在的位置