【发布时间】:2016-10-13 18:37:41
【问题描述】:
假设我有一些输入文件sheet[n].in。对于每个输入文件,我想生成两个输出文件,sheet[n].out 和 solved[n].out。我已经写了这个 Makefile:
SOURCES = sheet1.in
OUT = $(SOURCES:.in=.out)
SOLVED = $(patsubst sheet%,solved%,$(OUT))
sheets: ${OUT}
solvedsheets: ${SOLVED}
all: sheets solvedsheets
sheet%.out: sheet%.in
cat $< > $@
solved%.out: sheet%.in
cat <% > $@
echo "solved!" >> $@
debug:
@echo "OUT = ${OUT}"
@echo "SOLVED = ${SOLVED}"
我用一些包含一些文本的虚拟sheet1.in 文件对其进行测试。运行make 时,它会产生sheet1.out,但不会产生solved1.out。 make debug 产量:
OUT = sheet1.out
SOLVED = solved1.out
我可以删除 solved%.out 的规则,并且 make 甚至不会抱怨缺少规则。似乎只是忽略了 SOLVED 列表作为必要的输出文件。这是为什么呢?
【问题讨论】:
标签: makefile