Makefile 替换特殊字符

Gua*_*eño 1 replace makefile special-characters substitution

我想将%更改为? 反之亦然。以下均无效,原始字符串未更改。

varStrg1=this/is_a/%_test
test=$(subst \%,\?,$(varStrg1))
test=$(patsubst \%,\?,$(varStrg1))

varStrg2=this/is_a/?_test
test=$(subst \?,\%,$(varStrg2))
test=$(patsubst \?,\%,$(varStrg2))
Run Code Online (Sandbox Code Playgroud)

Mad*_*ist 5

你不能在 makefile 中用反斜杠来转义(至少,不是在函数调用中)。您正在尝试用文字字符串替换文字字符串\%\?并且由于您的字符串不包含任何\%字符组合,因此没有任何反应。

因为subst你可以直接使用它们:

test = $(subst %,?,$(varStrg1))

test = $(subst ?,%,$(varStrg2))
Run Code Online (Sandbox Code Playgroud)

subst函数中唯一的特殊字符是$, ,,)我相信。

对于patsubst,您不能将其用于此目的。