makefile変数から末尾のスペースを削除する方法は?

makefile変数から末尾のスペースを削除する方法は?

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

関連情報