Makefile 如何知道文件已更改,然后重新编译它?

仅仅出于好奇,Makefile 如何知道文件已经更改(然后重新编译) ?到 make了吗?这取决于编译器吗?如果是这样,是否依赖于语言?

16308 次浏览

它查看文件的时间戳,就这么简单。如果依赖项比目标更新,则重新构建目标。

通过检查文件信息而不是文件内容来完成工作。

确定目标及其依赖项之间的依赖关系,然后查看文件是否存在。如果是这样,它会向操作系统询问文件上次修改的时间和日期。这是用于此目的的“时间戳”,尽管这个术语可能有其他含义。

如果目标文件不存在,或者存在并且比其依赖文件更早,则 Make 通过应用规则从依赖文件重新构建目标。

如果依赖项不存在,则将信号设置为错误。

这样做的一个结果是,您可以通过删除目标来强制重建,或者通过“触摸”依赖项来使其比目标晚一些。你可以通过“触摸”目标来避免重建。触摸只是将时间戳更新到现在。