2017-12-31 31 views
1

は、ルールのいずれかの前に、私は次のようにありますメイクファイルをルールの外で中断させることはできますか?私のMakefileの先頭で

ifeq ($(ENVIRONMENT),LOCAL) 
    TARGET := local_target 
else 
    TARGET := hello 
endif 

ENVIRONMENT環境変数が設定されていない、またはLOCAL以外の値に設定され、代わりにTARGETを設定する場合helloに、メイクファイルを停止して-1で終了します。

私はそれを行うことができますか?私はexit -1TARGET := helloを変更すると、私は次のエラーを取得する:

Makefile:4: *** missing separator. Stop. 

は、どのように私はこの作業を行うことができます? exitを呼び出すためのMakefile内:あなたはshell assignment operator!=すなわち):使用できるよう

答えて

2

exitは、シェルコマンドである

TARGET != exit -1 

これはに実際に相当します:

TARGET := $(shell exit -1) 

注意これはシェルの呼び出しをシェルのexitを組み込んだもの、つまり:makeを終了しません。

$(error Error-message-here) 

は一緒にすべてを置く:

ifeq ($(ENVIRONMENT),LOCAL) 
    TARGET := local_target 
else 
    $(error ENVIRONMENT not set to LOCAL) 
endif 
+1

をあなたは 'の結果を割り当てる必要はありませんメイクファイルを処理している間に終了するための典型的なアプローチではなく、GNUのmake error組み込み関数を呼び出すことですエラー機能。その関数は展開されないので、 '$(error ...)'を書く必要はありません。 '$(error ...)'を書く必要はありません。 – MadScientist

+0

@MadScientistありがとう、それは意味をなさない。 –

関連する問題