変数が設定されていない場合、または設定されているがnull値がある場合に備えて、デフォルト値が必要な変数を持つMakefileがあります。
どうすればこれを達成できますか?
シェルスクリプト内でmakeを呼び出し、makefileで必要な値をシェルから$ 1として渡すことができるため、これが必要です。これをmakefileに渡すには、bashスクリプト内に設定する必要があります。
アイデア:(エレガントではありません)bashスクリプト内では、変数が設定されていてもnull値がある場合、変数をチェックできます。その場合、変数を設定解除できます。
注:変数がbashスクリプトで設定されているため、変数がターミナルで定義されていない場合、以下は機能しません。
dSourceP?=$(Shell pwd)
Source?=$(notdir $(wildcard $(dSourceP)/*.md))
make all dSourceP="${1}" Source="${2}"
bash ./MyScript.sh
bash ./MyScript.sh /home/nikhil/MyDocs
bash ./MyScript.sh /home/nikhil/MyDocs index.md
GNU make
を使用しているため、 the ?=
演算子 :
FOO ?= bar
ただし、これは既存のnull(または、空の)値を処理しません。以下は、存在しない値と空の値を扱います。
ifndef FOO
override FOO = bar
endif
test:
echo "$(FOO)"
.PHONY: test
(6行目が実際のタブで始まることを確認してください。)
あなたはこれを使って
make FOO=blah
値を設定します。 make
またはmake FOO=
はFOO
をbar
に設定することになります。 override
コマンドラインで設定された変数を上書きするには が必要です。