GNU make manual говорит
Возможно, что более чем одно правило шаблона будет соответствовать этим критериям. В этом случае make выберет правило с самым коротким стеблем (т.е. Шаблон, который наиболее точно соответствует).
Так меня удивило, что:
$ touch make_specific.cpp
$ cat Makefile.general_first
%.o: %.cpp
@echo using general rule
$(CXX) -c $< -o [email protected]
%_specific.o: %_specific.cpp
@echo using specific rule
$(CXX) -c $< -o [email protected]
$ 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
, я ожидал, что определенное правило будет выбрано, но это не так.
Что мне не хватает?