我很想使用以下形式的模板依赖
data/%/ld.data :: data/%/%LD.jsn
现在,只有第一个百分号登录依赖项data/%/%LD.jsn
被目标中的目录替换,如GNUmake手册中所述
是否有任何简单的方法可以获得所需的功能,即指定 data / Folder /ld.data 形式的所有文件都取决于相应的文件的数据/ 文件夹 / 文件夹 LD.data 即可。
我可以使用循环构建规则,但这需要提前指定所有相关文件夹,并在添加新文件夹时编辑makefile(或在makefile start中动态查找它们)
答案 0 :(得分:4)
是的,有一种更简单的方式;在第二次扩展期间使用自动变量(这实际上是最初创建允许的第二次扩展):
.SECONDEXPANSION:
data/%/ld.data : data/$$*/$$*LD.jsn
actions
答案 1 :(得分:0)
我改编自http://bitofahack.com/post/1406231094的一个解决方案就像这样
.SECONDEXPANSION:
data/%/ld.data: LANGNAME=$(notdir $(patsubst %/,%,$(dir $@)))
data/%/ld.data: LDFILE=data/$(LANGNAME)/$(LANGNAME)LD.jsn
data/%/ld.data: $$(LDFILE)
actions
但这看起来很麻烦,对$(notdir ...)
和$(dir ...)
无法合作的疯狂方式一无所知