18

(編集:@Michaelのフィードバックに基づいてより正確な質問)

bash では、パラメーター展開をよく使用します。次のコマンドは、が設定されていないdefault value場合は " " を$VARNAME出力し、そうでない場合は VARNAME の内容を出力します。

echo ${VARNAME:-default value}  #if VARNAME empty => print "default value" 
echo ${VARNAME-default value}   #if VARNAME empty => print "" (VARNAME string)

GNU で同様の機能は見つかりませんでしmake。私はついに私の中に書いたMakefile

VARNAME ?= "default value"
all:
        echo ${VARNAME}

しかし、私はこの解決策に満足していません。常に変数VARNAMEを作成するため、一部のメイクファイルの動作が変わる可能性があります。

設定されていない変数のデフォルト値を取得する簡単な方法はありますか?

4

4 に答える 4

28

GNU make 変数が空でない場合は展開を使用し、空の場合はデフォルト値を使用するが、変数を設定しない場合は、次のようにすることができます。

all:
        echo $(or $(VARNAME),default value)
于 2013-04-16T12:31:46.883 に答える