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

时间:2013-08-28 23:22:51

标签: c++ c makefile

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

通常在完成make之后,将针对后续c++单独编译正在修改的特定make文件。有时我甚至会在单个c++文件结果中经历一些小修改,几乎所有其他c++文件和最终可执行文件的编译。

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

1 个答案:

答案 0 :(得分:1)

所以timestamping中出现了makefile的概念。比如说make规则就像这样

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

当您执行makefile时,make首先检查timestamp output文件,(如果output文件不存在,则默认情况下规则被执行)。说output是在1200小时创建的,你在1205hrs更改了文件dep1并执行了make,然后make发现目标输出早于其relpndency dep1所以它将执行规则-1。如果假设output是在13:00创建的,dep1是在1230小时创建的,现在您在1310hrs更新dep2,并执行make。您可以在此处看到,因为dep1比执行dep2规则2更早且dep1的时间戳已更改,output现在早于dep1所以执行rule-1。您可以在此处看到即使output不直接依赖dep2更新dep2时重建makefile

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