使用重复的通配符创建目标和依赖项

时间:2016-04-25 19:24:29

标签: makefile

我有一个运行数据分析的makefile,我正在为许多具有共同工作流的数据集做。我有很多规则......

data/a/a.tax : code/a.sh code/a.x
    bash $<

data/b/b.tax : code/b.sh code/b.x
    bash $<

data/c/c.tax : code/c.sh code/c.x
    bash $<

我想我能做到......

data/%/%.tax : code/%.sh code/%.x
    bash $<

但这似乎不起作用(make: *** No rule to make target data/a/a.tax'. Stop

关于什么可行的任何建议?

1 个答案:

答案 0 :(得分:0)

模式规则目标只能包含一个%.SECONDEXPANSION可以解决此问题

.SECONDEXPANSION:
data/%.tax: code/$$(notdir $$*).sh code/$$(notdir $$*).x
    bash $<

尽管如此,除非您绝对需要特定的树结构,否则将先决条件更改为code/a/a.sh等更简单

data/%.tax : code/%.sh code/%.x
    bash $<