匹配多個模式規則的目標

如果目標與多個模式規則匹配,則 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 中的第一個。