Makefile make:依赖项中的百分比超过1%

Makefile make:依赖项中的百分比超过1%,makefile,gnu-make,Makefile,Gnu Make,我希望使用以下表单的模板依赖项 data/%/ld.data :: data/%/%LD.jsn 现在,只有第一个百分比登录依赖项data/%/%LD.jsn被目标目录替换,如GNUmake手册中所指定 是否有任何简单的方法可以获得所需的功能,即指定格式为data/Folder/ld.data的所有文件依赖于相应的文件data/Folder/FolderLD.data 我可以使用循环构建规则,但这需要预先指定所有相关文件夹,并在添加新文件夹时编辑makefile(或在makefile开始时动态

我希望使用以下表单的模板依赖项

data/%/ld.data :: data/%/%LD.jsn
现在,只有第一个百分比登录依赖项
data/%/%LD.jsn
被目标目录替换,如GNUmake手册中所指定

是否有任何简单的方法可以获得所需的功能,即指定格式为data/Folder/ld.data的所有文件依赖于相应的文件data/Folder/FolderLD.data


我可以使用循环构建规则,但这需要预先指定所有相关文件夹,并在添加新文件夹时编辑makefile(或在makefile开始时动态查找它们)

我采用的一种解决方案如下

.SECONDEXPANSION:
data/%/ld.data: LANGNAME=$(notdir $(patsubst %/,%,$(dir $@)))
data/%/ld.data: LDFILE=data/$(LANGNAME)/$(LANGNAME)LD.jsn

data/%/ld.data: $$(LDFILE)
   actions

但是这看起来很麻烦,更不用说疯狂的方式
$(notdir…
$(dir…
不能一起工作了

我采用的一种解决方案是这样的

.SECONDEXPANSION:
data/%/ld.data: LANGNAME=$(notdir $(patsubst %/,%,$(dir $@)))
data/%/ld.data: LDFILE=data/$(LANGNAME)/$(LANGNAME)LD.jsn

data/%/ld.data: $$(LDFILE)
   actions

但是这看起来很麻烦,更不用说疯狂的方式
$(notdir…
$(dir…
不能一起工作了

是的,有一种更简单的方法;在第二次扩展期间使用自动变量(这实际上是第二次扩展最初创建时允许的):


是的,有一个更简单的方法;在第二次扩展期间使用自动变量(这实际上是第二次扩展最初创建时允许的):