2017-07-14 8 views
0

に変更しますか?またはその逆。次の作品のどちらも、元の文字列は変更されません。Makefileで特殊文字を置換する

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

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

答えて

1

メークファイルでバックスラッシュでエスケープすることはできません(少なくとも、関数の呼び出し内ではありません)。あなたは、文字列リテラル\?と文字列リテラル\%を交換しようとしているし、あなたの文字列がどの\%文字の組み合わせを含まないので、何も起こりません。

substのためにあなただけのそれらを直接使用することができます。subst機能で特別な

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

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

文字だけは、私は信じて$,、および)です。

patsubstためには、この目的のためにそれを使用することはできません。

+0

右、それが働きました。私は私がバックスラッシュで、私は明白なことを見なかった、間違った機能(patsubst)を使用してその意味を取り除くことに焦点を当てたことに驚いています。ありがとう。 –

関連する問題