一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
makefile带来的好处就是——自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
注意:Makefile是一个文件,在当前目录下。
第1行:表示依赖关系,mycode.c生成目标文件mycode
第2行:表示依赖方法,通过gcc编译。
用make指令就可以执行我们在Makefile里写的方法。
怎么清理调生成的可执行程序 mycode
注意:前面是table键,不是四个空格。
make会自顶向下扫描目标文件,把要形成的第一个目标文件充当make的默认动作。
因此建议把要形成的可执行程序放在前面。
被编译过的文件,如果代码没有更新,是无法再make的
why?
没必要,浪费时间。
how?
.exe新于.c ,源文件是老的,不需要编译。
.exe老于.c , 源文件是新的,需要编译。
Access:最近访问时间(因为改变太快,所以实际上并不会每次都更新)。
Modify\Change:
有了时间,就可以转时间戳进行比较文件新旧。
make 不一定每次都执行,那我一定要执行呢?
.PHONY:伪目标
mycode对应的依赖关系总是被执行。
建议给clean加上.PHONY
可以用$@ $^代表mycode 和 mycode.c
不想回显,就加@