0

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

4

1 回答 1

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无论如何处理这些空间是一场噩梦,因为许多其他原因。

于 2013-03-06T09:06:21.507 回答