make和makefile
make和makefile
当输入make时,make会在当前目录下找名字叫“Makefile”或“makefile”的文件
操作一件事情,必须有依赖关系加依赖方法,makefile本质上是依赖关系加依赖方法的集合,依赖关系就是目标文件与依赖文件,依赖方法可以是任意指令,对应行加上@显示器不打印对应指令(关闭回显),加上#可以注释对应行,必须以tab键开头
makefile的第一个目标文件是缺省形成的,实现其他目标文件需要make加对应文件名
.PHONY开头是声明一个伪目标,要形成这个伪目标,就必须执行其依赖方法
对于目标文件,有时候需要重新编译,有时候不需要,原因是对比了源文件和可执行程序的Mtime来实现的
文件包括文件内容和属性
stat可以查看文件的详细信息:Access时间不具有太大意义
当可执行程序的Mtime时间比源文件新时,不会重新编译,反之则会进行编译,但是.PHONY的目标文件对应的依赖方法总是被执行的
%为makefile语法中的通配符,%.c是当前目录下的所有.c文件,展开到依赖列表中
gcc -c $<是右侧的依赖文件依次替换$<,gcc -c $^是将$^一次性替换为所有依赖文件,$@是目标文件形成的内容
makefile中也可以定义变量
一次形成两个可执行程序,充分利用了PHNOY的特性