когда несколько правил шаблона соответствуют цели

В GNU make manual говорится

It is possible that more than one pattern rule will meet these criteria. In that case, make will choose the rule with the shortest stem (that is, the pattern that matches most specifically).

Поэтому меня удивило, что:

$ 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, я ожидал, что будет выбрано конкретное правило, но это не так.

Что мне не хватает?

16
задан Joe Doyle 12 July 2012 в 15:24
поделиться