Makefileでは、変数の値をバインドするために引用符は必要ありません。
たとえば、次のように許可されます。
a := ls -l -a > out.txt
私の質問は次のとおりです。
a := ls -l -a > out
b := .txt
c := $(a)$(b)
変数$(a)行の末尾にスペースがある場合、変数$(c)は次のようになります。
ls -l -a > out .txt
その後にスペースがありますout
!
これによりエラーが発生する可能性があります。
すべてのmakefile変数の値で末尾のスペースを完全に無視する方法はありますか?
答え1
いいえ、makeが変数定義を解析する方法を変更する方法はありません。変数が定義されたポイントを変更できない場合は、その変数が使用されるポイントを変更する必要があります。
GNU makeを使用していて、変数の値の中にスペースを入れないでください。strip
機能。
c := $(strip $(a))$(strip $(b))
答え2
スペースは行末にありません。スペースは .txt の前にあります。
これはうまくいきます:
a:= ls -l -a >out
b:=.txt
c:=$(a)$(b)
all:
@echo ${c}
あらゆる種類のテキスト処理機能を使用することもできます。しかし、「空白の一定量(または空白不足)」に依存するようにするのは一般的に「悪い」ことです。
答え3
その後もまだ余裕がありますout
。 Variable 末尾のスペースを削除するなどの問題が発生しましたa
。