0

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

通常在 a完成后,将单独编译正在修改make的特定文件以供后续s 使用。有时我甚至会在单个文件中遇到一个小的修改,结果编译几乎所有其他文件和最终的可执行文件。c++makec++c++

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

4

1 回答 1

1

所以这里出现了timestampingin的概念makefile。比如说make规则是这样的

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

当您执行makefilethenmake首先检查文件timestampoutput(如果output文件不存在,则默认情况下执行规则)。说output是在 1200 小时创建的,您在 1205 小时更改文件 dep1 并执行make,然后make发现目标输出比其依赖关系更旧,dep1因此它将执行规则 1。如果假设output是在 1300 时创建的,dep1在 1230 时,现在您dep2在 1310 时更新,并执行make. 您可以在此处看到,因为dep1dep2执行规则 2 更早,并且dep1' 的时间戳已更改,output现在比dep1执行规则 1 更早。即使output不直接依赖于,您也可以在此处看到dep2它在您更新时重建dep2

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

于 2013-08-29T05:04:04.553 回答