Makefile:用于比较的测试Makefile
我需要制作一个makefile,将我编写的命令grep输出与.out文件进行比较。grep搜索的输入文本文件位于tests/*.test中 Beta的回答很有帮助,只是我不明白为什么会有这个makefileMakefile:用于比较的测试Makefile,makefile,grep,Makefile,Grep,我需要制作一个makefile,将我编写的命令grep输出与.out文件进行比较。grep搜索的输入文本文件位于tests/*.test中 Beta的回答很有帮助,只是我不明白为什么会有这个makefile INPUT_DIR=tests OUTPUT_DIR=outputs FILES=$(wildcard ${INPUT_DIR}/*.test) TEST_LIST = ${FILES:${INPUT_DIR}/%.test=%.diff} .PHONY: all clean dis
INPUT_DIR=tests
OUTPUT_DIR=outputs
FILES=$(wildcard ${INPUT_DIR}/*.test)
TEST_LIST = ${FILES:${INPUT_DIR}/%.test=%.diff}
.PHONY: all clean distclean
all: ${TEST_LIST}
echo ${FILES}
echo ${TEST_LIST}
${TEST_LIST}: ${INPUT_DIR}/%.test ${OUTPUT_DIR}/%.out
./grep apple $< >STDOUT
diff STDOUT ${OUTPUT_DIR}/$*.out > $@
${INPUT_DIR}/%.test:
echo $@
${OUTPUT_DIR}/%.out:
echo $@
clean:
rm -f ${FILES}
并使用makefile all
make: Nothing to be done for `makefile'.
echo tests/%.test tests/%.test
echo outputs/%.out outputs/%.out
./grep apple tests/%.test >STDOUT
您的问题尚不清楚,但由于您使用文件
STDOUT
作为中间文件,每次比较都使用它,并且不使用它,因此我建议您结合以下规则:
%.diff: ${INPUT_DIR}/%.test ${OUTPUT_DIR}/%.out
./grep apple $< >STDOUT # Do you really have an executable called "grep"?
diff STDOUT ${OUTPUT_DIR}/$*.out > $@
我不确定你的问题是什么(或者你到底想做什么),但你的
all
规则几乎肯定不会达到你的目的。
%.diff: ${INPUT_DIR}/%.test ${OUTPUT_DIR}/%.out
./grep apple $< >STDOUT # Do you really have an executable called "grep"?
diff STDOUT ${OUTPUT_DIR}/$*.out > $@
all:
@echo you must specify a target, e.g. outputs/foo.diff