1个规则

目标:依赖条件
(一个tab缩进)命令
①目标的时间必须晚于依赖条件的时间,否则更新目标
②依赖条件如果不存在,找寻新的规则去产生依赖

2个函数

src = $(wildcard *.c) 找到当前目录下所有后缀位为.c的文件,赋值给.src
obj= $(patsubst %.c,%.o,$(src)) 把src变量里所有后缀为.c的文件替换成.o
clean:(没有依赖)
-rm -rf $(obj) a.out “-”的作用是,删除不存在文件时,不报错

3个自动变量

$@:表示规则中的目标
$<:表示规则中的第一个条件
$^:表示规则中的所有条件,组成一个列表,由空格隔开,如果这个列表中有重复项则消除重复项

模式规则

%.c:%.o
gcc -c $< -o $@

伪目标

.PHONY: clean ALL