Заміна розширень у списку імен файлів, розділених пробілами, є загальною вимогою, і для цього є вбудовані функції. Якщо ви хочете додати знак xу кінці кожного імені у списку:
FILES_OUT = $(FILES_IN:=x)
Загальна форма така $(VARIABLE:OLD_SUFFIX=NEW_SUFFIX). Це приймає значення VARIABLEі замінює OLD_SUFFIXв кінці кожного слова, яке закінчується цим суфіксом на NEW_SUFFIX(невідповідні слова залишаються незмінними). GNU make виклики цієї функції (яка існує в кожній реалізації make) посилання на заміщення .
Якщо ви просто хочете , щоб зміни .docв .docxі .xlsв .xlsxзастосуванні цього засобу вам необхідно використовувати проміжну змінну.
FILES_OUT_1 = $(FILES_IN:.doc=.docx)
FILES_OUT = $(FILES_OUT_1:.xls=.xlsx)
Ви також можете використовувати трохи більш загальний синтаксис $(VARIABLE:OLD_PREFIX%OLD_SUFFIX=NEW_PREFIX%NEW_SUFFIX). Ця функція не є унікальною для GNU make, але вона не така портативна, як звичайна заміна, що змінює суфікс.
Існує також функція GNU make, яка дозволяє ланцюжку декількох підстановок в одному рядку: patsubstфункція .
FILES_OUT = $(patsubst %.xls,%.xlsx,$(patsubst %.doc,%.docx,$(FILES_IN)))
FILES_OUT := $(patsubst %,%x,$(FILES_IN))якщо правило справді можна зробити таким загальним.