1、什么是makefile?
Makefile:将不同模块放在不同的目录中,定义一系列的规则进行 “自动化编译”
2、Makefile写法
vim makefile
填写样例:
app:sub.c add.c mult.c div.c main.cgcc sub.c add.c mult.c div.c main.c -o app
3、工作原理
1、依赖不存在,则 向下 检查:
比如:
2、时间检测
依赖的时间比目标的时间早:make: ‘app’ is up to date.
依赖的时间比目标的时间晚(我修改一下main.c文件):就会重新生成目标
4、变量(更方便)
5、模式匹配(更更方便)
6、函数
src中存放所有.c
的文件,然后用patsubst将.c
都替换成.o
的文件。
**注意:**加上clean语句
可以自动删除.o
的文件,不过直接执行make
不会调用clean
,执行make clean
才会调用。
再来补充一下:现在我们再make一下,把.o文件重新生成
touch clean
创建一个clean文件,然后make clean,这并不会执行清除操作,
这是由于clean没有依赖,总是被认为是最新的。
clean并不需要生成一个具体的文件,因此我们可以定义伪目标:.PHONYL:clean
.PHONY:clean
clean:rm $(objs) -f
此时执行 make clean
就可以清除.o
文件了!