在makefile中切换目录

时间:2015-11-02 13:19:26

标签: makefile

我已将我的项目写在某个目录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;在问题中得到纠正

1 个答案:

答案 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的wildcardpatsubst函数将其转换为相应的输出文件,尽管它很难看:

{{1}}

现在,您只有两个规则和一个命令。