Makefile 如何在make中将相对路径上移一级?
抱歉,这有点深奥,但在我的makefile中有一个变量$(BASE),它是一个相对路径。我需要把这条路往上一层。 所以如果我有“../../../src”,我想要“../../src”。Makefile 如何在make中将相对路径上移一级?,makefile,Makefile,抱歉,这有点深奥,但在我的makefile中有一个变量$(BASE),它是一个相对路径。我需要把这条路往上一层。 所以如果我有“../../../src”,我想要“../../src”。 有没有办法在Make中轻松执行此操作?如果要执行此操作的BASE的所有值都以开头。可以尝试 $(patsubst ../%,%,$(BASE)) 如果您只想删除任意路径的第一个组件(即a/b/c->b/c),则需要做更多的工作: space := $(empty) $(empty) shift-list =
有没有办法在Make中轻松执行此操作?如果要执行此操作的
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)))
并将其用作
$(调用移位路径,$(基))
。如果你的路径有空格,这会中断,但无论如何,在make
中处理这些空格是一场噩梦,因为还有很多其他原因。我对简单的一个很有希望,因为我所有的路径都是从../开始的,但它删除了所有../,这并不是我想要的。第二个,更复杂的一个成功了!这很奇怪,patsubst
应该可以正常工作。这对我来说确实有效。你能显示你使用的代码和你在上面使用的值吗?