同一配方有多个隐式(或模式)规则

时间:2018-07-21 21:25:27

标签: makefile gnu-make

我有一个命令,可以接收多种类型的输入文件并生成相关的输出。 IT所做的事情类似于从图像生成缩略图。我想编写一次配方,并列出每个调用配方的隐式规则,例如:

%.png : %.jpg
%.png : %.jpeg
%.png : %.svg
%.png : %.gif
        convert $< -resize 100x100 $@

这适用于.gif,但对于其他文件类型,我得到“无规则可定位”。

有没有一种方法可以表达这套规则而不重复配方?

2 个答案:

答案 0 :(得分:1)

您可以添加一个没有先决条件的规则:

%.png : %.jpg
%.png : %.jpeg
%.png : %.svg
%.png : %.gif
%.png :
        convert $< -resize 100x100 $@

草稿是,如果您在没有任何先决条件的情况下尝试构建foo.png,Make会巧妙地尝试在没有输入文件的情况下进行构建。您可以在配方中进行测试,以在这种情况下获得更优美的退出效果,但这不是很优雅。

答案 1 :(得分:1)

以下内容应接近您想要的内容:

{{1}}