String 对包含等号的强函数进行替换引用
我正试图用a来改变字符串。问题是字符串恰好包含一个等于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 显然,这不起作用,因为=在这个上下文中是一个特殊字符,但我不知道如何让它意识
=
符号
例如:
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这样的东西会警告它的使用)。