2016-11-04 13 views
1

GNU Make特殊変数は、コマンドラインコールでユーザーが送信したターゲットを知るためのものですか? (これは一例です)のような何かを達成するために:GNU Make:要求されたターゲット

// makefile 
ifeq ($(USER_TARGET),"plain") 
CXXFLAGS += -O0 
else 
CXXFLAGS += -O3 
endif 

plain: 
    // do something using CXXFLAGS 

all: 
    // other rule using CXXFLAGS 

それは、値がいくつかの特別なGNUによって設定された特別なGNU変数を作ることができUSER_TARGET変数(またはカスタム変数が関数を作ることが重要です

$ make plain 

などの呼び出しで指定された元のターゲットが含まれており、依存関係ツリーの任意のステップの値ではありません。つまり、私が間違っていなければ、USER_TARGETの値は最初に使用されたときに評価され、ドキュメントの任意のポイントで発生する可能性があるため、USER_TARGETはビルド依存チェーン中に変更してはなりませんので、私は建物のチェーンの現在のステップは、USER_TARGETの値を変更しないようにしたいと思います。

十分明確であるか、過度に説明されているかどうかはわかりません。

GNU Makeに組み込まれているメカニズムがない場合、$(shell command)のトリックも歓迎です。

+1

これはおそらくあなたのために働くでしょうか? [レシピ内に変数を割り当てることはできません](http://stackoverflow.com/questions/6519234/cant-assign-variable-inside-recipe)。 – lurker

+1

あなたは何をしようとしているのか分かりませんが、最近私は 'debug:clean' @make CFLAGS = '$ {DEBUG_CFLAGS}'' – Random832

+1

でメイクファイルを見ました。 make -f Makefile build test'を使ってビルドとテストの両方のターゲットを呼び出すことができます – mjs

答えて

関連する問題