变量中的 Makefile 目标依赖项

Makefile target dependency in variable

我无法弄清楚目标依赖项是如何工作的,这是我为目录中的每个文件执行目标所写的内容:

FILES= $(wildcard *.txt)

all: $(FILES)
    @echo $(FILES)

%.txt:
    @echo "Runned $@"

这只会回显文件列表,不会输入 %.txt 目标,我希望它为目录中存在的所有 .txt 文件执行目标 %.txt(无论它们是否已更改)

基本问题是任何匹配 %.txt 的目标名称已经存在并且没有依赖关系,因此 make 认为没有理由重建它。如果您真的希望每次都重新运行命令,最简单的方法可能是引入 phony target 作为依赖项...

FILES= $(wildcard *.txt)

all: $(FILES)
    @echo $(FILES)

.PHONY: .FORCE
%.txt: .FORCE
    @echo "Runned $@"