我想使用 make 将图像转换为我正在编写的书的正确格式。输入图像位于figure
目录中,并且可以具有不同的文件格式,例如PNG,SVG或JPG。根据文件扩展名,我想运行不同的转换命令。结果应该位于output
,并且始终为PNG类型。
FIGURES := $(patsubst figure/%.svg,output/%.png,$(wildcard figure/*.svg))
figures: $(FIGURES)
output/%.png: figure/%.svg
convert -density 600 -background none -resize 2500x $< $@
这是我到目前为止,它只适用于SVG输入。如何从figure
目录收集所有文件而不管文件扩展名如何,并根据文件扩展名应用不同的规则?
答案 0 :(得分:1)
像
这样的东西sources := $(wildcard $(addprefix figure/*,.png .svg .jpg))
targets := $(patsubst figure/%, output/%.png, $(basename $(sources)))
.PHONY: all
all: $(targets)
output/%.png: figure/%.png
# whatever
output/%.png: figure/%.svg
convert -density 600 -background none -resize 2500x $< $@
output/%.png: figure/%.jpg
# blah