【发布时间】:2014-05-03 01:41:03
【问题描述】:
出于好奇,Makefile 如何知道文件已更改(然后重新编译)?是make吗?这取决于编译器吗?如果是,它是否依赖于语言?
【问题讨论】:
标签: makefile programming-languages
出于好奇,Makefile 如何知道文件已更改(然后重新编译)?是make吗?这取决于编译器吗?如果是,它是否依赖于语言?
【问题讨论】:
标签: makefile programming-languages
它查看文件时间戳 - 就这么简单。如果依赖项比目标更新,则重新构建目标。
【讨论】:
git 呢?是否可以读取该文件?谢谢:)
Make 工作不包括保留以前文件的副本以便与最近的文件进行比较。
通过检查有关文件的信息而不是其内容来制作作品。
Make 计算出目标及其依赖项之间的依赖关系,然后查看文件是否存在。如果有,它会询问操作系统上次修改文件的时间和日期。这是用于此目的的“时间戳”,尽管该术语可以有其他含义。
如果目标文件不存在,或者存在且早于其依赖文件,则 Make 通过应用规则从依赖文件重建目标。
如果依赖项不存在,Make 会发出错误信号。
这样做的结果是您可以通过删除目标来强制重建,或者通过“接触”依赖项以使其晚于目标。您可以通过“触摸”目标来避免重建。触摸只是将时间戳更新到现在。
【讨论】: