模式规则通过通配符%
为某一类文件定义编译规则。如所有.c
文件都编译为.o
,模式规则可写为:
%.o : %.c
编译命令
模式规则中,目标和依赖项中包含通配符%
,依赖项中的通配符%
用于匹配依赖项文件名,目标中的通配符%
在生成的目标文件名称中会被替换成所匹配的字符串。如main.c
被编译为main.o
。
通配符%
在目标中只包含一个,%
可匹配任意非空字符串。某些隐式规则本质上是一些模式规则,make工具内部就是通过定义模式规则实现这些隐式规则的。
依赖项中的某些项可以不使用%
,这种依赖项与匹配的依赖项一起作为输入被编译成目标文件,这种不变的依赖项有时是有用的。
模式规则例子
把xxx.c
编译成xxx.o
:
%.o : %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
把xxx.c
编译成xxx-test.o
:
%-test.o : %.c
$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@