Makefileで環境変数を設定することは可能ですか?質問する

Makefileで環境変数を設定することは可能ですか?質問する

Makefile で環境変数を設定して、 と同じシェルで実行されている別のプログラムで使用しようとしていますmakeが、makeが実行された後です。

更新: コメント付きの承認された回答によると、これは不可能です。

手順:

  1. 実行make test設定env:export TEST_ENV_ONE=OneString
  2. 読み取り可能な別のプログラムを実行するTEST_ENV_ONE

これを試しました:

動作しません:

test:
    export TEST_ENV_ONE=OneString
    $(shell export TEST_ENV_TWO=TwoString)

その後は空になります:

echo $TEST_ENV_ONE
echo $TEST_ENV_TWO

ベストアンサー1

上記export TEST_ENV_ONE=OneStringは専用シェルで実行されています。後続のコマンドは他のシェルインスタンスで実行されます。したがって、環境変数は継承されませんTEST_ENV_ONE


トップレベル(つまり、ターゲットのレシピではない)を使用することができます。export指令メイクファイル内:

export env_var := MyEnvVariable

.PHONY: all
all:
    echo env_var: $$env_var

このようにして、変数はenv_varレシピを実行するシェルにエクスポートされます。

make上記の makefile を使用して実行する場合:

$ make
echo env_var: $env_var
env_var: MyEnvVariable

出力からわかるように、実行されたシェルには環境にecho env_var: $env_var変数がありました。env_var

おすすめ記事