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

是否可以使用Makefile中的模式将文件名的中间部分从源映射到目标?,makefile,gnu-make,Makefile,Gnu Make,我有一组文件,它们看起来都像: meta\u UNIQID\u set.xml.gz并希望使用Makefile来创建类似于UNIQID.json.gz的目标。其基本原理是适应现有的多步骤管道(在此表格中指定了名称) 我已经在gnu make中寻找了允许这种转换的模式替换,但是我还没有发现它能实现我想要的功能。我可以使用其他工具进行转换,甚至可以编写特定的规则,因为只有几个文件。我只是好奇是否有一种直接的方法使用现有的gnu make功能 您可以像这样使用%词干字符: %.json.gz: met

我有一组文件,它们看起来都像:

meta\u UNIQID\u set.xml.gz
并希望使用
Makefile
来创建类似于
UNIQID.json.gz
的目标。其基本原理是适应现有的多步骤管道(在此表格中指定了名称)


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

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

%.json.gz: meta_%_set.xml.gz
        echo "Processing $< to $@, stem is $*"
        cp $< $@
%.json.gz:meta_u%\u set.xml.gz
echo“处理$<到$@,干是$*”
cp$<$@

官方文档称之为。

忽略了这样一个事实,即词干可以用于扩展之前指定base之外的其他用途。谢谢。