对多个先决条件和多个目标使用模式规则

Make use Pattern Rule for multiple prerequisites and multiple targets

我有一个关于 make 的问题,我不知道如何解决它。我想使用 shell 脚本转换子目录中的每个文件。这是我写的:

OBJ=$(wildcard src/*.in)
OUT=$(patsubst %.in, %.out, $(notdir $(OBJ)))

%.out : src/%.in
    ./myscript.sh $< > $@

$(OUT) : $(OBJ)

makefile 有效,但它只为第一个 .in 文件运行脚本,然后停止。抱歉这个愚蠢的问题,但我无法解决这个问题!

因为您没有告诉 Makefile 构建所有 $(OUT) 文件,您只是在说明应该如何构建它。

试试这个

OBJ=$(wildcard src/*.in)
OUT=$(patsubst %.in, %.out, $(notdir $(OBJ)))

all: $(OUT)

%.out : src/%.in
    ./myscript.sh $< > $@

.PHONY: all