匹配多个模式规则的目标
如果目标与多个模式规则匹配,则 make 将使用其先决条件存在或可以构建的规则。例如:
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
%.o: %.s
$(AS) $(ASFLAGS) $< -o $@
将 foo.c
编译为 foo.o
或将 foo.s
汇编为 foo.o
,具体取决于 foo.c
或 foo.s
中的哪一个存在。
如果多个规则具有存在或可以构建的先决条件,则 make 将使用与最短词干匹配的规则。例如:
f%r:
@echo Stem is: $*
fo%r:
@echo Stem is: $*
将使用第二条规则来制作目标 foo.bar
,回应 Stem is: o.ba
。
如果多个规则与最短的茎匹配,make 将使用 Makefile 中的第一个。