Makefile 一组规则 两个函数 三个自动变量
src = $(wildcard *.c) 找到当前目录下所有后缀为.c的文件, 赋值给src
obj = $(patsubst %.c,%.o, $(src)) 把src变量里所有后缀为.c的文件替换成.o
$@: 表示规则中的目标
$<: 表示规则中的第一个条件
$^: 表示规则中的所有条件,组成一个列表,以空格隔开,如果这个列表中有重复的项则消除重复项。
1 src = $(wildcard ./src/*.c)
2 obj = $(patsubst ./src/%.c,./obj/%.o,$(src))
3
4 inc_path = ./inc
5
6 a.out:$(obj)
7 gcc $^ -o $@
8 ./obj/%.o:./src/%.c
9 gcc -c $< -o $@ -I $(inc_path)
10
11 clean:
12 -rm -rf $(obj) a.out