如何在文件未被修改时告知?

时间:2015-05-20 11:01:50

标签: makefile

Make可以判断自上次make调用以来文件是否已被修改。我想它会比较文件'修改时间与上次构建时间的关系。要做到这一点,它必须将最新的时间存储在磁盘上,对吗?

任何人都知道它是否以及在何处或如何做到这一点?

感谢。

2 个答案:

答案 0 :(得分:2)

我猜你看起来并不太难找到答案:

  

http://www.gnu.org/software/make/如果目标文件比其所有依赖项更新,那么它已经是最新的,并且不需要重新生成。

     

http://www.gnu.org/software/make/manual/html_node/Rule-Syntax.html过时的标准是根据先决条件指定的,其中包含由空格分隔的文件名。 [...]如果目标不存在或者它比任何先决条件(通过比较最后修改时间)更旧,则目标已过期。我们的想法是根据先决条件中的信息计算目标文件的内容,因此如果任何先决条件发生更改,现有目标文件的内容将不再有效。

     

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html make 实用程序会检查时间关系,并应更新那些修改时间早于文件修改时间(称为先决条件)的派生文件(称为目标)。是派生的。

答案 1 :(得分:1)

它没有那样做。

相反,它将目标的修改时间与其依赖项的修改时间进行比较。所以,当你有一个规则

foo-sorted: foo; sort $< > $@

比较foo-sortedfoo的修改时间。