String 对包含等号的强函数进行替换引用

String 对包含等号的强函数进行替换引用,string,makefile,escaping,String,Makefile,Escaping,我正试图用a来改变字符串。问题是字符串恰好包含一个等于=符号 例如: INPUT = -switch1 -switch2=potato -switch3 OUTPUT = $(INPUT:-switch2=%=-switch2=turnip) all: @echo TEST : $(OUTPUT) 因此,在形式$(var:a=b)中,输入是var,-switch2=%是a和-switch2=turnip是b 显然,这不起作用,因为=在这个上下文中是一个特殊字符,但我不知道如何让它意识

我正试图用a来改变字符串。问题是字符串恰好包含一个等于
=
符号

例如:

INPUT = -switch1 -switch2=potato -switch3
OUTPUT = $(INPUT:-switch2=%=-switch2=turnip)

all:
    @echo TEST : $(OUTPUT)
因此,在形式
$(var:a=b)
中,
输入
是var,
-switch2=%
a
-switch2=turnip
b

显然,这不起作用,因为
=
在这个上下文中是一个特殊字符,但我不知道如何让它意识到这是字符串
a
的一部分
我尝试过引用、反斜杠、替代转义字符,并将
-switch2=%
放在变量中,然后改用它。都没有用

我知道我可以使用patsubst,但那会将第一个非POSIX扩展名添加到文件中,我不想成为那个家伙


任何建议,谢谢

您必须使用完整的
patsubst
函数。替换引用只是
patsubst
的快捷方式:

OUTPUT = $(patsubst -switch2=%,-switch2=turnip,$(INPUT))

谢谢,尽管我很想避免使用
patsubstr
,因为我相信它是gnu的扩展(所以像automake这样的东西会警告它的使用)。