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