我有一些文件存储在名为data
和helpers
的目录中,我想使用它们来创建位于result
目录中的目标文件。
目录结构如下:
data
+ A
| + file1
| + file2
| + ...
+ B
| + file1
...
helpers
+ file1
+ file2
...
< p > 在< code > result < /code >中的目录结构与< code > data < /code >相同。因此,我想写出以下规则:< /p >
result/%: data/% helpers/% script
script $@ $(word 1,$^) $(word 2,$^)
这个问题在于
helpers
目录下的file1
、file2
等文件不在子目录中。现在我有以下几个选项:
- (不切实际,有20个子目录)为每个子目录编写单独的规则
- 使用
foreach
包含每个子目录以创建规则(那么我如何访问前提条件列表?)
result/%: data/% helpers/$(basename %) # this doesn't work
result/%: data/% helpers/$(basename $*) # this doesn't work either
有没有办法通过修改规则中匹配的词干来修改规则声明中的模式?
$(foreach ...)
,我如何添加实际规则(语法似乎不支持换行符)? - Michael Schubert