破片

破片

変数が設定されていないか設定されているが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=設定されます。FOObaroverride コマンドラインで設定された変数のオーバーライド

関連情報