Makefile で環境変数を設定して、 と同じシェルで実行されている別のプログラムで使用しようとしていますmake
が、make
が実行された後です。
更新: コメント付きの承認された回答によると、これは不可能です。
手順:
- 実行
make test
設定env:export TEST_ENV_ONE=OneString
- 読み取り可能な別のプログラムを実行する
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