Заміна розширень у списку імен файлів, розділених пробілами, є загальною вимогою, і для цього є вбудовані функції. Якщо ви хочете додати знак 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))
якщо правило справді можна зробити таким загальним.