在Makefile代码中解释...
PATH = a/b/x
$(patsubst a/%/x,%,$(PATH)) # => b
$(patsubst */%/x,%,$(PATH)) # => a/b/x
似乎这两个结果应该产生相同的结果b
,因为*
应该匹配任何内容。为什么不是这样?如何使用任何前缀编写一个表达式来捕获中心词,而不仅仅是'a'?
答案 0 :(得分:2)
简单地说没有很好的处理通配符的能力。由于$(patsubst */%/x,%,$(PATH))
中没有*
,您的$(PATH)
无效。但你可以用这个kludge获得你想要的效果:
$(word 2, $(subst /, ,$(PATH)))