makefile介绍 — 跟我一起写Makefile 1.0 文档
make和makefile
首先我们要清楚:make是指令,makefile是文件
一个工程所需要的源文件有很多,makefile定义了一系列规则,去规定文件的编译顺序或者更复杂的文件操作。
当makefile存在时,make会去找makefile,并将其的第一个文件作为目标文件。
make和makefile共同使用,完成自动化构建。
makefile的书写规则+示例
目标文件:依赖关系
依赖方法
若想让依赖关系总被执行,在文件前声明.PHONY,将其设置为 伪目标。
总是被执行可以无视编译器对修改时间的判断:即使没有修改,也可以被执行
makefile的工作方法
编译器iqiynaib根据目标文件的依赖关系,递归式的生成一系列文件(类似栈),直到最后成功编译出第一个目标文件。
简化书写的方法:
1.$@表示目标文件,$^表示所有的依赖文件
2.在依赖方法前加@可以不回显依赖方法的内容
如何判断是否要重新编译——stat touch amc
make会根据源文件和目标文件的新旧,判断是否需要重新执行依赖关系进行编译。
1.为什么要判断:提高编译效率,避免重复编译
2.怎么做到的?:比较源文件最近修改时间和可执行文件最近修改时间,一般而言源文件的最近修改时间比可执行程序要旧。
.exe新于.c——需要重新编译
.exe旧与.c——不需要重新编译
如何查看:stat
修改时间:access——最近访问时间(vim,cat),modify——文件内容修改时间(决定是否重新编译),change——文件属性修改时间
文件=文件内容+文件属性
用touch可以更新文件所有时间,touch完可以重新make
进度条项目实践:
https://gitee.com/oneshaw/echo_-aran/tree/master/ProgressBar