Новый способ задания шаблонных правил
В "традиционных" вариантах make шаблонное правило задается с помощью конструкций, наподобие:
.cpp.o: gcc $^ -o $@ То есть под действие правила попадают файлы с определенными расширениями (".cpp" и ".o" в данном случае).
GNU Make поддерживает более универсальный подход - с использованием шаблонов имен файлов. Для задания шаблона используется символ '%', который означает "последовательность любых символов произвольной длины". Символ '%' в правой части правила заменяется текстом, который соответствует символу '%' в левой части. Пользуясь новой формой записи, приведенный выше пример можно записать так:
%.o: %.cpp gcc $^ -o $@
В своих make-файлах я пользуюсь новой формой записи шаблонных правил, потому что считаю ее более удобной (шаблонные и нешаблонные правила теперь имеют аналогичный синтаксис) и универсальной (можно задавать не только файлы, отличающиеся своими расширениями).