gdy wiele reguł wzorca pasuje do celu

ThePodręcznik GNU make mówi

Możliwe, że więcej niż jedna reguła wzoru spełni te kryteria. W takim przypadku make wybierze regułę z najkrótszym trzonem (czyli wzorem, który pasuje najbardziej).

Zaskoczyło mnie to, że:

$ touch make_specific.cpp

$ cat Makefile.general_first
%.o: %.cpp
@echo using general rule
$(CXX) -c 
$ 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
lt; -o $@ %_specific.o: %_specific.cpp @echo using specific rule $(CXX) -c
$ 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
lt; -o $@ $ make -B -f Makefile.general_first make_specific.o using general rule g++44 -c make_specific.cpp -o make_specific.o

Wiele reguł wzoru pasuje do celu, a od trzonu do%_specific.o : %_specific.cpp reguła (w tym przypadku „make”) jest krótsza niż trzonek dla%.o : %.cpp reguła, spodziewałem się, że konkretna reguła zostanie wybrana, ale tak nie jest.

czego mi brakuje?

questionAnswers(1)

yourAnswerToTheQuestion