gpt4 book ai didi

c++ - Makefile 编译所有文件,即使更改是在单个 c++ 文件中完成的

转载 作者:行者123 更新时间:2023-11-28 07:27:26 25 4
gpt4 key购买 nike

我从事的项目涉及大量 c++ 文件。我出于好奇问这个问题。

通常在 make 完成后,修改后的特定 c++ 文件将单独编译以用于后续的 make。有时,即使对单个 c++ 文件进行微小的修改,也会编译几乎所有其他 c++ 文件和最终的可执行文件。

Makefile编译其他未修改的c++文件是什么原因?

最佳答案

于是在makefile中引入了timestamping的概念。比方说 make 规则是这样的

output: dep1
rule-1
dep1: dep2
rule-2

当您执行makefile 时,make 首先检查output 文件的timestamp,(如果output 文件不存在则默认执行规则)。假设 output 是在 1200hrs 创建的,你在 1205hrs 更改文件 dep1 并执行 make,然后 make 发现目标输出早于它的依赖项 dep1 因此它将执行规则 1。如果假设 output 在 1300hrs 创建,dep1 在 1230hrs 创建,现在您在 1310hrs 更新 dep2,并执行 make。你可以在这里看到因为 dep1dep2 规则 2 被执行并且 dep1 的时间戳被改变了,output 现在比 dep1 旧,因此执行规则 1。您可以在此处看到,即使 output 不直接依赖于 dep2,它也会在您更新 dep2

时重建

这就是您的情况。检查 makefile 并尝试检查您编辑的文件的依赖性。依赖于您编辑的文件的目标将被重建。

关于c++ - Makefile 编译所有文件,即使更改是在单个 c++ 文件中完成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com