%20%E3%81%BE%E3%81%9F%E3%81%AF%20%24%7BMAKE%7D%20%E3%81%AF%20make%20%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AE%9F%E9%9A%9B%E3%81%AB%E4%BD%95%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F.png)
完全なビルドプロセス中に実行されている$(MAKE)
か、実際に実行される内容です${MAKE}
。make
最も単純な用語で「関数を呼び出す」サブルーチンなどのプロシージャを呼び出すのですか、それとも独自のファイルの先頭まで再帰プロシージャを起動しますか?
答え1
このmake
プログラムは、MAKE
またはのようにmakefileで使用できる変数を設定します。後者は、シェルスクリプトが構文を認識し、いくつかのスクリプトを2つの間で再利用できるため、便利です。$(MAKE)
${MAKE}
それ以外はシェルとは異なってmake
処理されるため、シェル/make構文の間には重複する部分は多くありません。$$
トラブルシューティングポイント:MAKE
変数はプログラム名が実際に指定されていない可能性があるため、再帰に役立ちます。make
(例えば、、gmake
)pmake
であり、同じプログラムで正常に繰り返すには、その情報が必要です。プログラムmake
(名前が再指定されています)は、変数を使用するかどうかにかかわらず、この再帰を認識します。
追加資料:POSIXが有効になります。
答え2
$(MAKE)
オーバーライドしない限り、現在の make プログラムへのパスが含まれます。
make
実装名に対して make を呼び出すと、検索によって$(MAKE)
make 実装が呼び出されるので、その名前のみを含める必要がありますPATH
。たとえば、次のように呼び出してこれを確認します。
cd /usr/bin
./make -f /dev/null | grep MAKE
絶対パスまたは相対パスを介して make 実装を呼び出す場合は、$(MAKE)
make 実装の絶対パス名を含めます。
$(MAKE)
これにより、makeファイルでこれがデバッグメッセージでコンパイルされ、どこにインストールされた一時バイナリであっても、常に同じmakeプログラムを呼び出すことができます。
注:以下を呼び出して、makeプログラムによって設定された初期値を取得できます。
$make -f /dev/null -p | grep MAKE