Можно ли использовать шаблоны в Makefile для отображения середины имени файла от источника к цели?

У меня есть набор файлов, которые все выглядят так:

meta_UNIQID_set.xml.gz и хотел бы использовать Makefile сделать цели, которые выглядят как UNIQID.json.gz, Обоснование заключается в том, чтобы вписаться в существующий многошаговый конвейер (где имена указаны в этой форме).

Я искал замены шаблонов в gnu make, которые допускают такого рода трансформацию, но я не нашел чего-то, что, похоже, будет делать то, что я хочу. Я могу сделать это преобразование с другими инструментами и даже написать конкретные правила, так как есть всего несколько файлов. Мне просто любопытно, есть ли прямой подход, который использует существующую функциональность GNU Make.

1 ответ

Решение

Вы можете использовать % Происходящий персонаж вроде так:

%.json.gz: meta_%_set.xml.gz
        echo "Processing $< to $@, stem is $*"
        cp $< $@

Официальная документация называет это шаблонными правилами.

Другие вопросы по тегам