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