変数が設定されていないか設定されているが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
答え1
GNUを使用しているので、make
次のものを使用できます。?=
オペレーター:
FOO ?= bar
ただし、これは既存のnull(または空の)値を処理しません。以下は、欠落値とヌル値を処理します。
ifndef FOO
override FOO = bar
endif
test:
echo "$(FOO)"
.PHONY: test
(ライン6が実際のタブで始まることを確認してください。)
使用できる
make FOO=blah
値を設定します。make
または最終的にはにmake FOO=
設定されます。FOO
bar
override
コマンドラインで設定された変数のオーバーライド。