匹配符 % 允许 make 命令对文件名进行类似正则运算的匹配。
参看下面 Makefile:
objects = foo.o bar.o all.o
all: $(objects)
# 注意这一行!!
$(objects): %.o: %.c
all.c:
echo "int main() { return 0; }" > all.c
%.c:
touch $@
clean:
rm -f *.c *.o all
等价于:
objects = foo.o bar.o all.o
all: $(objects)
# "$(objects): %.o: %.c" 的等价写法
foo.o: foo.c
bar.o: bar.c
all.o: all.c
all.c:
echo "int main() { return 0; }" > all.c
%.c:
touch $@
clean:
rm -f *.c *.o all
通过使用匹配符 % ,可以只用一条规则来实现大类同类型文件的构建,减少 Makefile 的书写量。