Makefile,所有规则模式的规则

Makefile, rule for all rule patterns

上下文

我正在使用模式规则

%.png: %.tex
    compile.sh $<

从所有可用的(已更改的)tex 文件生成 png 文件。

问题

我不正确的是我想使用 make all 一次为所有这些人做这件事。

all: *.tex
    compile.sh $^

然而,$^ 似乎总是被所有 tex 文件替换,而不仅仅是被更改的文件(显然,Makefile 并不真正知道与 png 文件的连接)。

替代方法无效

正在使用

all: *.png
    compile.sh $^

当 png 文件还不存在时没有意义,对吗?

是否真的有一些特定的原因让您必须使用一条命令完成所有操作?为什么不能让 all 依赖所有 .png 文件?

%.png: %.tex
        compile.sh $<

TEXFILES := $(wildcard *.tex)
all: $(TEXFILES:.tex=.png)