Сложное шаблонное правило в Makefile
У меня есть следующий make-файл, который я использую для генерации файлов из некоторых шаблонов, сгенерированные файлы имеют два возможных расширения:
%.tex: %.tex*_tpl
./generate $@_tpl -o $@
%.xml: %.xml*_tpl
./generate $@_tpl -o $@
Список зависимостей здесь будет соответствовать таким вещам, какa.tex_tpl
, a.tex-subpart1_tpl
, a.tex-subpart2_tpl
.
Пока это работает, есть ли способ избежать повторения? Например, сопоставляя*.{tex,xml}
в имени правила и использовать полное совпавшее имя в списке зависимостей? Нечто похожее на это:
%.{tex,xml}: $@_tpl
./generate %.{tex,xml}: $@_tpl
./generate $< -o $@
lt; -o $@
(Хотя я знаю%.{tex,xml}
не является допустимым именем правила, и вы не можете использовать$@
в списке зависимостей)
Или любым другим (более чистым?) Способом.