是否可以在 Makefile 中使用模式将文件名的中间部分从源映射到目标?

Is it possible to use patterns in Makefile to map middle of filename from source to target?

我有一组文件看起来像:

meta_UNIQID_set.xml.gz 并希望使用 Makefile 来制作看起来像 UNIQID.json.gz 的目标。基本原理是适合现有的多步管道(名称以这种形式指定)。

我已经在 gnu make 中寻找允许这种转换的模式替换,但我还没有找到看起来像我想要的东西。我可以使用其他工具进行此转换,甚至可以编写特定规则,因为只有几个文件。我只是很好奇是否有使用现有 gnu make 功能的直接方法。

您可以像这样使用 % 词干字符:

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

官方文档称之为Pattern rules