我有一些类似的文件,我想用makefile对其进行操作。所以我正在这样做。
INPUT := $(wildcard *.png)
OUTPUT := $(INPUT:.png=.jpeg)
.PHONY: all
all: $(OUTPUT)
$(OUTPUT): $(INPUT)
convert $< -resize 30x30 $@
我得到了正确的jpeg文件名,但所有文件中的图像都是一样的(第一个依赖关系)。
我知道使用 $<
仅指列表中的第一个依赖关系,而使用 $^
给出了所有输出的deps。
有没有办法让dep1代表输出1,dep2代表输出2,以此类推?
这样你就声明每个输出文件都依赖于每个输入文件。你应该使用一个模式规则来代替,即:.PHONY: $(OUTUT): $(...)。
$(OUTPUT): %.jpeg: %.png
convert $< -resize 30x30 $@
我会倾向于使用..:
%.jpeg: %.png
convert $< -resize 30x30 $@
在任何情况下,你都不希望重新制作 都 当你的缩略图中的一个原始图像发生变化时,你的缩略图就会发生变化--它们各自只依赖于单个对应的png文件。