Makefile 依赖项是一个列表变量,但 $< 仅采用第一个依赖项
Makefile the dependency is a list variable but $< is only taking the first dependency
我有一些类似的文件,我想使用 makefile 对其进行操作。所以我这样做:
INPUT := $(wildcard *.png)
OUTPUT := $(INPUT:.png=.jpeg)
.PHONY: all
all: $(OUTPUT)
$(OUTPUT): $(INPUT)
convert $< -resize 30x30 $@
我得到了正确的 jpeg 文件名,但图像在所有文件中都是相同的(第一个依赖项)。
我知道使用 $<
仅指列表中的第一个依赖项,使用 $^
是给所有的部门,但对于所有的输出。
有什么办法可以让 dep1 用于 output1,dep2 用于 output2 等等?
这样您就可以声明每个输出文件都依赖于每个输入文件。您应该改用模式规则,即:
$(OUTPUT): %.jpeg: %.png
convert $< -resize 30x30 $@
我倾向于使用:
%.jpeg: %.png
convert $< -resize 30x30 $@
在任何情况下,您都不希望在原始图像之一发生变化时重新制作 所有 缩略图——它们每个都只依赖于单个对应的png 文件。
我有一些类似的文件,我想使用 makefile 对其进行操作。所以我这样做:
INPUT := $(wildcard *.png)
OUTPUT := $(INPUT:.png=.jpeg)
.PHONY: all
all: $(OUTPUT)
$(OUTPUT): $(INPUT)
convert $< -resize 30x30 $@
我得到了正确的 jpeg 文件名,但图像在所有文件中都是相同的(第一个依赖项)。
我知道使用 $<
仅指列表中的第一个依赖项,使用 $^
是给所有的部门,但对于所有的输出。
有什么办法可以让 dep1 用于 output1,dep2 用于 output2 等等?
这样您就可以声明每个输出文件都依赖于每个输入文件。您应该改用模式规则,即:
$(OUTPUT): %.jpeg: %.png
convert $< -resize 30x30 $@
我倾向于使用:
%.jpeg: %.png
convert $< -resize 30x30 $@
在任何情况下,您都不希望在原始图像之一发生变化时重新制作 所有 缩略图——它们每个都只依赖于单个对应的png 文件。