从两个变量同时自动化makefile中的规则

时间:2009-08-24 08:03:49

标签: makefile

我有一些搜索模式很适合作为结果文件名的一部分。因此,我将正则表达式和相应的文件名部分拆分为两个不同的变量,如下所示。如何自动执行以下操作,以便我不必为ALL手动列出文件,也不必手动输入运行grep的规则?

SEARCH_RE   = test  a/b/c  a.*b
SEARCH_FILE = test  abc    ab

ALL = result.test result.abc result.ab

all: $(ALL)

result.test:
        grep test  inputfile > result.test

result.abc:
        grep a/b/c inputfile > result.abc

result.ab
        grep a.*b  inputfile > result.ab

2 个答案:

答案 0 :(得分:1)

我不知道如何创建规则,但ALL目标很容易:

ALL = $(patsubst %,result.%,$(SEARCH_FILE))

答案 1 :(得分:1)

我推荐

ALL = $(addprefix result.,$(SEARCH_FILE))

至于编写规则,我认为你想要的查找类型可以在Make中完成,但实际上不应该 - 它将是一个可怕的kludge。我建议这样做:

result.test: TARG = test
result.abc: TARG = a/b/c
result.ab: TARG = a.*b

$(ALL):
    grep $(TARG) inputfile > $@