为什么* /%/ x在Makefile中不匹配a / b / x?

时间:2010-12-14 12:11:36

标签: regex makefile

在Makefile代码中解释...

PATH = a/b/x
$(patsubst a/%/x,%,$(PATH))    # => b
$(patsubst */%/x,%,$(PATH))    # => a/b/x

似乎这两个结果应该产生相同的结果b,因为*应该匹配任何内容。为什么不是这样?如何使用任何前缀编写一个表达式来捕获中心词,而不仅仅是'a'?

1 个答案:

答案 0 :(得分:2)

简单地说没有很好的处理通配符的能力。由于$(patsubst */%/x,%,$(PATH))中没有*,您的$(PATH)无效。但你可以用这个kludge获得你想要的效果:

$(word 2, $(subst /, ,$(PATH)))