Makefileにいくつかの環境変数を含めようとしています。 envファイルは次のとおりです。
FOO=bar
BAZ=quux
export
各環境変数は起動できません。 Makefileにプリアンブルexport
とenvファイルを追加すると、include
すべてがうまく機能します。しかしexport
、。これにより、include envfile
Makefileでのみ使用できなくなります。
私も次のことを試しました。
sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env
ただし、これを行うと、含めるenvファイルが存在しないため、makeでエラーが発生します。
答え1
私も同様の問題があり、このスレッドに到着しました。別の考えられる解決策は、引数なしで make エクスポートコマンドを実行することです。
include .env
export
これにより、すべてのmake変数が環境変数としてエクスポートされます。この動作はすべてのユースケースと一致する場合もそうでない場合もありますが、私には機能し、シェルスクリプトの魔法は含まれていません。
答え2
gnu makeを使用している場合は、このenvfile
ファイルを含めてから同じファイルから取得した変数のリストをエクスポートする必要があります。
#!make
include envfile
export $(shell sed 's/=.*//' envfile)
test:
env
答え3
以前の回答を完了するためにmeuh
envファイルを動的に作成するには、設定機能を定義できます。
- 一部のコンテンツを含む
env/local-dev.env
ファイルの作成env/integ.env
- ロードする方法を定義します。
setup_env 定義 $(評価 ENV_FILE := env/$(1).env) @echo "-設定環境 $(ENV_FILE)" $(評価には env/$(1).env が含まれます) $(評価のエクスポート sed 's/=.*//' env/$(1).env) エンデブ
それからそれを使う
localDevEnv: ##env/local-dev.env 環境のロード $(setup_env,local-dev 呼び出し) integEnv: ##env/integ.env 環境のロード $(setup_env 呼び出し、整数)
答え4
既存のENV変数を保持
export $(shell [ ! -n "$(ENVFILE)" ] || cat $(ENVFILE) | grep -v \
--perl-regexp '^('$$(env | sed 's/=.*//'g | tr '\n' '|')')\=')
test:
echo $$FOO
走る
make ENVFILE=envfile test # bar
export FOO=foo
make ENVFILE=envfile test # foo