web-dev-qa-db-ja.com

メイクファイルでシェル環境変数を取得する方法は?

シェルに入ったら

echo $demoPath

印刷する

/usr/local/demo

メイクファイルでこの変数$demoPathの値を取得するにはどうすればよいですか?

72
Jialin

環境変数をエクスポートした場合:

export demoPath=/usr/local/demo

makefilemakeは設定したすべての環境変数をインポートします)で名前で単純に参照できます:

DEMOPATH = ${demoPath}    # Or $(demoPath) if you prefer.

環境変数をエクスポートしていない場合、エクスポートするか、コマンドラインで明示的に渡さない限り、環境変数にアクセスできません。

make DEMOPATH="${demoPath}" …

Cシェル派生物を使用している場合、exportコマンドの代わりにsetenv demoPath /usr/local/demoを使用します。

99

公式文書で動作を確認したい人向け

Makeの変数は、makeが実行される環境から取得できます。 makeが起動時に確認するすべての環境変数は、同じ名前と値を持つmake変数に変換されます。ただし、makefileでの明示的な割り当て、またはコマンド引数を使用すると、環境がオーバーライドされます。 (「-e」フラグが指定されている場合は、環境の値がメイクファイル内の割り当てをオーバーライドします。

https://www.gnu.org/software/make/manual/html_node/Environment.html

2
Dyno Fu
all:
    echo ${PATH}

または、1つのコマンドだけでPATHを変更します:

all:
    PATH=/my/path:${PATH} cmd
1
g10guang