シェルスクリプトでできること
. conf/environment
Makefileで同じことができますか?
Make には両方のinclude
and -include
(およびsinclude
他の make ツールとの互換性のために保持されている) ステートメントがあります (後で「オプションの」包含を表します)。したがって、次のようなことができます。
PLATFORM := $(shell uname)
include conf/environment_$(PLATFORM).mk
everyenvironment_*.mk
は同じ変数を定義しますが、ターゲットとするプラットフォームに応じて値が異なります。
詳細については、GNU Make ドキュメントの §3.3「他の Makefile を含める」</a> を参照してください。
アップデート:
シェル スクリプトを実行して実際に環境変数をインポートしようとしている場合は、2 つのオプションがあります。1 つ目は、make を実行する前にスクリプトを実行することです。その後、Makefile 内のこれらの変数にアクセスできます。だからあなたはそうするでしょうsource conf/environment && make
。オプション 2 は、スクリプトを変更しexport
、実行する代わりに、実行してからecho
Make のeval
コマンドを使用して、その出力をコマンドとして実行することです。
良い解決策がないように見えるので、私が考えることができる最もクリーンなハックは次のとおりです。
レイヤー 2 の各シェル スクリプトで、次のようにします。
. conf/environment
次に、レイヤー 3 で実際のビルド スクリプトを実行します。