如何在make中将相对路径向上移动一个级别?

时间:2013-03-06 04:03:30

标签: makefile

很抱歉,如果这有点深奥,但在我的makefile中,我有一个变量$(BASE),这是一个相对路径。我需要将路径提升一级。 所以,如果我有“../../../src”,我想要“../../src” 有没有办法在Make中轻松完成这个?

1 个答案:

答案 0 :(得分:2)

如果您想要执行的BASE所有值以../开头,则可以尝试

$(patsubst ../%,%,$(BASE))

如果你想删除任意路径的第一个分量(即a / b / c - > b / c),则需要更多的工作:

space := $(empty) $(empty)
shift-list = $(wordlist 2,$(words $1),$1)
shift-path = $(subst $(space),/,$(call shift-list,$(subst /, ,$1)))

并将其用作$(call shift-path,$(BASE))。如果您的路径有空格,这会中断,但处理make中的路径会出于许多其他原因而成为一场噩梦。