Boşluklarla ayrılmış dosya adlarından oluşan bir listedeki uzantıların değiştirilmesi yaygın bir gerekliliktir ve bunun için yerleşik özellikler vardır. xListedeki her ismin sonuna bir eklemek isterseniz :
FILES_OUT = $(FILES_IN:=x)
Genel biçim $(VARIABLE:OLD_SUFFIX=NEW_SUFFIX). Bu, bu son ek ile biten her sözcüğün sonundaki değerini alır VARIABLEve değiştirir (eşleşmeyen sözcükler değiştirilmeden bırakılır). GNU bu özelliği (her make uygulamasında mevcut olan) ikame referanslarını çağırır .OLD_SUFFIXNEW_SUFFIX
Sadece değişim istiyorsanız .dociçine .docxve .xlsiçine .xlsxbu özelliği kullanarak, bir ara değişkeni kullanmak gerekir.
FILES_OUT_1 = $(FILES_IN:.doc=.docx)
FILES_OUT = $(FILES_OUT_1:.xls=.xlsx)
Biraz daha genel sözdizimini de kullanabilirsiniz $(VARIABLE:OLD_PREFIX%OLD_SUFFIX=NEW_PREFIX%NEW_SUFFIX). Bu özellik GNU yapımına özgü değildir, ancak basit sonek değiştirme ikamesi kadar taşınabilir değildir.
Aynı satırda birden çok ikameyi zincirlemenize izin veren bir GNU make özelliği de vardır: patsubstişlev .
FILES_OUT = $(patsubst %.xls,%.xlsx,$(patsubst %.doc,%.docx,$(FILES_IN)))
FILES_OUT := $(patsubst %,%x,$(FILES_IN))da kural gerçekten o kadar genel yapılabilirse.