Makefile处理一个目录中的所有文件,并输出到另一个目录。

Makefile处理一个目录中的所有文件,并输出到另一个目录。,makefile,Makefile,如何设置Makefile来处理一个目录中的所有文件,将输出重定向到另一个目录(每个输入文件一个输出文件)?我有: 。。。但它会不断在./output中重新生成已经存在的文件。这样写: INPUTS := $(wildcard ./input/*.txt) # Create a list of all the output files you want to generate OUTPUTS := $(patsubst ./input/%.txt,./output/%.out,$(INPUTS)

如何设置Makefile来处理一个目录中的所有文件,将输出重定向到另一个目录(每个输入文件一个输出文件)?我有:

。。。但它会不断在./output中重新生成已经存在的文件。

这样写:

INPUTS := $(wildcard ./input/*.txt)

# Create a list of all the output files you want to generate
OUTPUTS := $(patsubst ./input/%.txt,./output/%.out,$(INPUTS))

# The default is to build all the OUTPUTS files
all: $(OUTPUTS)

# Tell make how to build a single output file
./output/%.out : ./input/%.txt
        python process.py $< > $@
输入:=$(通配符。/input/*.txt)
#创建要生成的所有输出文件的列表
输出:=$(patsubst./input/%.txt、./output/%.out、$(INPUTS))
#默认设置是生成所有输出文件
全部:$(产出)
#告诉make如何构建单个输出文件
./output/%.out:./input/%.txt
python process.py$<>$@

你得到了你想要的:第三行告诉make每个输出文件都依赖于所有的输入文件。添加一个新的输入文件会导致重新生成所有输出文件。
INPUTS := $(wildcard ./input/*.txt)

# Create a list of all the output files you want to generate
OUTPUTS := $(patsubst ./input/%.txt,./output/%.out,$(INPUTS))

# The default is to build all the OUTPUTS files
all: $(OUTPUTS)

# Tell make how to build a single output file
./output/%.out : ./input/%.txt
        python process.py $< > $@