2012-01-23 90 views
1

在典型的回归中,有一个“基本”类别和一个测试用例“abc.c”。要运行类测试“ABC”,“基本”,用户在向键:Makefile中的目标替换

make basic_abc 

然后命令应该是:

basic_abc: abc.c 
     gcc -g -o abc abc.c 

我如何写一个规则,这将CHOP我的$ @中的“basic_”。这样我就可以对所有测试使用该规则。 在伪语言,我怎么能得到与模式替换上述规则

basic_abc: $(patsubst .*_, " ", [email protected]).c 
     gcc -g -o $(patsubst .*_, " ", [email protected]) $(patsubst .*_, " ", [email protected]).c 

回答

1

你的意思是这样的吗?

.PHONY: basic_% 
basic_%: %.c 
     gcc -g -o $* $< 

虽然已经知道如何编译.c文件。从你的问题来看,basic_x依赖编译的x似乎更有意义,并且在配方中的一堆测试用例上运行它,但也许我误解了你的设置。

+0

我认为这有效。我会试试看。但为什么我们需要.PHONY? – Mike

+0

.PHONY目标指定不存在具有此名称的构建制品(目标文件);它只是一个“人类”目标,每次请求制作时应重复其操作(即使具有该名称的文件存在并且比其依赖关系更新,至少在理论上)。 – tripleee