匹配多个模式规则的目标

如果目标与多个模式规则匹配,则 make 将使用其先决条件存在或可以构建的规则。例如:

%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@
%.o: %.s
    $(AS) $(ASFLAGS) $< -o $@

foo.c 编译为 foo.o 或将 foo.s 汇编为 foo.o,具体取决于 foo.cfoo.s 中的哪一个存在。

如果多个规则具有存在或可以构建的先决条件,则 make 将使用与最短词干匹配的规则。例如:

f%r:
    @echo Stem is: $*
fo%r:
    @echo Stem is: $*

将使用第二条规则来制作目标 foo.bar,回应 Stem is: o.ba

如果多个规则与最短的茎匹配,make 将使用 Makefile 中的第一个。