我有一些搜索模式很适合作为结果文件名的一部分。因此,我将正则表达式和相应的文件名部分拆分为两个不同的变量,如下所示。如何自动执行以下操作,以便我不必为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
答案 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 > $@