我发现这个问题基本上都是一样的,但没有得到真正的答案.
哪里是make它记住了文件的时间戳的配置文件/数据库文件,因此它可以告诉哪些改变呢?我检查过,.make我的项目中没有或类似,也没有在主目录中.
或者它是否以某种方式将信息存储在文件本身中,可能是通过修改时间戳?(听起来很可疑)
Som*_*ude 11
没有这样的"数据库".该程序只是比较源文件和目标文件的文件系统修改和创建时间戳.
假设您有以下规则:
some_target: some_source_1 some_source_2
Run Code Online (Sandbox Code Playgroud)
然后,如果修改的时间戳为任何一个some_source_1或some_source_2晚于修改/创建时间,some_target那么将激活规则并重建目标.
Makefile 描述目标和依赖关系。 Make如有必要,执行创建/重新创建目标的命令。
如果目标不存在,make则将尝试创建它。
如果目标确实存在,则make比较目标及其依赖项的修改时间。如果在修改目标后修改了任何依赖项,make则将执行命令以重新生成目标。
例如,对于 C 文件,目标是相应的.o文件,依赖项是包含 C 源代码的文件(可能还有一些包含文件)。如果.c文件比文件新.o,则make运行 C 编译器。这将生成一个.o修改时间比.c文件更新的文件。