个人主页:Lei宝啊
愿所有美好如期而遇
目录
比如我们有一个.c的文件,我们想要生成他的可执行程序,是不是要依赖这个文件?
我们知道了要生成这么一个可执行程序,需要依赖这个,c文件,那么如何通过这个文件生成可执行程序?这就需要依赖方法。




先看举例代码:

我们会发现,编译一次后,再不允许编译,再看例子:


这一次,我们在对源文件修改后就可以编译了。

再编译,又不允许,我们就很好奇,系统是根据什么来判断是否让我们编译?

答案是时间,acm,访问文件时间,修改文件内容时间,修改文件属性时间,而且是通过比对源文件和可执行程序的Modify时间


只要可执行程序的Modify时间比源文件的时间新,那么就说明我们对源文件查看或者修改过,而且未编译,此时就可以编译了。

其余两个时间是不行的。
但是我们还是有不修改源文件而只更新文件时间的命令。

touch命令,更新文件时间戳。
那么,在我们修改源文件后,有时候,因为源文件过多的原因,文件的修改时间可能没有修改,如果出现了无法编译的情况,那么我们就需要清理解决方案,也就是清理项目。

实际上,我们在进行编译的时候,没有生成目标文件,直接生成了可执行文件,在集成开发环境中,是会有各种临时文件生成的,当然,我们也可以用gcc 生成各种临时文件,但是博主懒。
补充:
另外要提到的一点是伪文件,就是加了.PHONY: , 加上他以后,意思就是总是被执行,也就是说,我不管你时间是否修改,只要你命令,我就执行。
而且值得注意的是,make指令只会执行makefile中从上到下第一组依赖关系和依赖方法。如果我们的文件依赖列表中的文件找不到,就会向下去找,找到以后执行生成,再返回去执行。

$@就是目标,$^就是我们的依赖文件列表