我已将我的项目写在某个目录d
中。我有一大套测试用例。所以我想将它们放在din
的内部目录d
中。另外,我想将输出文件存储在dout
中。怎么做到这一点?
现在我的makefile的一部分看起来像:
test:
./a.out < input1.c > output1.txt
./a.out < input2.c > output2.txt
.
.
.
.
./a.out < inputn.c > outputn.txt
(众所周知)
make test
现在执行该程序。
编辑: &LT; &GT;在问题中得到纠正
答案 0 :(得分:1)
创建子目录Makefile
。让你的Makefile
在那里运行测试。
在主目录test:
$(MAKE) -C din test
中输入规则
Makefile
我还会重写您现有的output%.txt: input%.c
a.out < $< > $@
。
首先,你不想为每个文件重复同样的事情。您可以在此处使用模式规则。因此规则变为
test
现在如何让.c
目标依赖于每个输出文件?
如果有一个构造可以使用上述规则列出可以从现有文件制作的每个文件,那将会很棒,但是没有。但是,我们可以获取以test: $(patsubst output%,input%,$(patsubst %.c,%.txt,$(wildcard *.c)))
结尾的现有文件列表,并使用GNU Make的wildcard和patsubst函数将其转换为相应的输出文件,尽管它很难看:
{{1}}
现在,您只有两个规则和一个命令。