patsubst和dir用法

jog*_*ito 2 makefile gnu-make

我试图弄清楚.mk文件中的以下两行是什么意思

包括$(ROOTDIRECT)/ target/$(MYSUBDIR)/defs.mk
包括$(ROOTDIRECT)/ target/$(dir $(patsubst%/,%,$(MYSUBDIR)))/ defs.mk

为了清晰起见,让ROOTDIRECT为"/ home/me",MYSUBDIR为"platform"
第一行,我猜是直接的,包括"/home/me/target/platform/defs.mk"

我不理解的第二行,我对我的环境的猜测是它包含"/home/me/target/defs.mk"
我是对还是错,有人可以帮我理解第二行

Did*_*set 6

$(patsubst %/,%,$(MYSUBDIR))将取代任何匹配的模式%/通过%,其中%可以是任何东西.

换句话说,它会删除尾随/$(MYSUBDIR).

请参阅GNU Make Manual 8.2函数进行字符串替换和分析