重建时消失的 运行 时间错误是否表示构建系统中存在错误?

Are run-time errors that disappear on rebuild indicative of bugs in the build system?

我们都听说过 - "try a clean build and see if it works"。通常奇怪的 运行-time 错误会在重建后消失。这让我想到——正确跟踪依赖关系是构建系统的工作。

这样的 运行时间错误 根据定义 构建系统中的错误 - 无论是 make,还是 msbuild,或者任何一个。或者换句话说,如果一个干净的构建和一个正常的构建产生不同的结果,根据定义,这是否是构建系统中的错误?

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

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

重建全部为完整性构建。

部分重建失败的原因是

  • 知识不正确。构建了一个库,但是碎片化的构建系统不理解整体的依赖关系。
  • 缺少依赖项。虽然理解了header对c代码的直接依赖,但是忽略了间接依赖。
  • 编辑并继续错误编译。部分构建 mid 了解代码更改的后果,并且没有足够的重新编译。

所有这些错误都被优势所弥补

  • make 文件更易于维护
  • 编译速度更快
  • 更快地解决错误

你需要自己判断价值所在