一:背景
make是一个命令工具,是一个解释makefifile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefifile都成为了一 种在工程方面的编译方法。
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefifile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
makefifile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一条命令,makefifile是一个文件,两个搭配使用,完成项目自动化构建。
二:示例代码
观察下述现象:
在第二次使用 make 的时候,提示我们 mybin 已经是最新的,由此可以推断和时间有关系。
在文件形成时,一定是先有的 test.c 文件,然后才有的 mybin 文件,所以(即第1次make):
源文件(test.c)的修改时间 < mybin 文件的修改时间
补充:
在 Linux 系统中,stat 命令用于显示指定文件或文件系统的文件状态信息,包括文件的类型、权限、大小、所属用户和组、访问时间、修改时间、创建时间等详细信息。它可以用于检查文件的状态以及了解文件的属性。
格式为:stat + 文件名
stat makefilestat test.c
通过 stat 命令查看文件的状态信息(第2次make):
但此时,我们发现第2次 make 时,源文件(test.c)的修改时间 > mybin 文件的修改时间
此时,需要我们重新编译形成可执行程序,才重新使用 make。
如下图所示:
make/makefile 总是不让我们重新编译我们的代码???提高编译效率
怎末做到的(如何知道代码的新/旧)???
解决完 make 不能多次使用的原因,那么为什莫 make clean 就可以多次使用呢???
原因是:我们将它设置了伪目标,用 .PHONY 修饰。
修饰伪目标的特性是,总是被执行的,不会被任何情况拦截。
那么,我们是否可以对 mybin 进行该方法???