Например,
# Makefile
%.out: %.o
g++ $^ -o $@
%.o: %.cpp
g++ -c $< -o $@
main.o: main.cpp
a.out: main.o
make не находит шаблона для a.out.
Вопрос: каким образом происходит поиск шаблона в Makefile?
Ответ: происходит так, что под выражение %.out: %.o подходит main.out: main.o, но не a.out: main.o