0

次のようないくつかのグローバル変数を使用しているメイクファイルがあります

REL=something..

DIR=something...

この makefile は、P1 と P2 という 2 つの製品をビルドするために使用されます。これは、グローバル変数のビルド値が使用される製品に基づいており、両方の製品のすべてのグローバル変数の値が同じであるため問題ではありませんでしたが、現在は変数 REL の値が製品 1 と製品 2 で異なります。これを試してみましたが、機能しません。

!IF "$(PRODUCT)"=="P1"

REL=value1

!ELSEIF "$(PRODUCT)"=="P2"

REL=value2

!ENDIF
4

2 に答える 2

1

私があなたの質問を正しく理解していれば(大きなif)、ターゲット固有の変数値でそれを行うことができます:

P1: REL=product1
P1: some_preq
    do_something...

P2: REL=product2
P2: some_other_preq
    do_something_else...
于 2013-09-06T13:42:57.517 に答える
0

make または automake の両方を使用している場合は、@Beta が提案したとおりに実行できます。make では、次のように定義チェックが行われます。

ifeq (P1,$(PRODUCT))
REL:=value1
endif

ifeq (P2,$(PRODUCT))
REL:=value2
endif

あなたがやろうとしていることを行うためのより良い方法は、@Beta が提案したとおりです。必要に応じて PHONY ターゲットを作成します。

于 2013-09-06T13:50:00.383 に答える