1

シェルスクリプトでできること

. conf/environment

Makefileで同じことができますか?

4

2 に答える 2

3

Make には両方のincludeand -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、実行する代わりに、実行してからechoMake のevalコマンドを使用して、その出力をコマンドとして実行することです。

于 2013-05-20T19:32:28.820 に答える
0

良い解決策がないように見えるので、私が考えることができる最もクリーンなハックは次のとおりです。

  • 3 層のビルド スクリプトがある
  • レイヤ 1 は Makefile です
  • レイヤー 2 は、make ターゲットごとに 1 つのシェル スクリプトの束で構成されます

レイヤー 2 の各シェル スクリプトで、次のようにします。

. conf/environment

次に、レイヤー 3 で実際のビルド スクリプトを実行します。

于 2013-05-20T21:58:21.463 に答える