GNU make 手册说
多个模式规则可能会满足这些标准。在这种情况下,make 将选择具有最短词干的规则(即最具体匹配的模式)。
所以让我吃惊的是:
$ touch make_specific.cpp
$ cat Makefile.general_first
%.o: %.cpp
@echo using general rule
$(CXX) -c $< -o $@
%_specific.o: %_specific.cpp
@echo using specific rule
$(CXX) -c $< -o $@
$ make -B -f Makefile.general_first make_specific.o
using general rule
g++44 -c make_specific.cpp -o make_specific.o
多个模式规则与目标匹配,并且由于%_specific.o : %_specific.cpp
规则的词干(在本例中为“make”)比规则的词干短%.o : %.cpp
,我希望选择特定的规则,但事实并非如此。
我错过了什么?