2010-12-14 3 views
2

Разъяснения в Makefile коде ...Почему не * /%/x не соответствует a/b/x, в 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))) 
Смежные вопросы