makeユーティリティの目的は、大規模なプログラムのどの部分を再コンパイルする必要があるかを自動的に判断し、それらを再コンパイルするコマンドを発行することです。このマニュアルは、Richard StallmanとRoland McGrathによって書かれたmakeのGNU実装について説明しています。これらの例は、Cプログラムが最も一般的であることを示していますが、コンパイラをシェルコマンドで実行できるプログラミング言語でmakeを使用することはできます。実際、makeはプログラムに限定されません。他のファイルが変更されるたびに、自動的に他のファイルから更新する必要のあるタスクを記述するために使用することができます。
注意:このページは、GNU makeのドキュメントの抜粋です。 . GNUプロジェクトはnroffを使用しないため、ときどき更新されます。最新のドキュメントは、Texinfoソースファイルmake.texinfoから作られたinfoファイルmake.infoを参照してください。
makeユーティリティの構文と準備
作る -f メイクファイル オプション … ターゲット …
makeを使用する準備をするには、プログラム内のファイル間の関係を記述するmakefileというファイルを作成し、各ファイルを更新するコマンドを記述する必要があります。通常、実行可能ファイルはオブジェクトファイルから更新され、オブジェクトファイルはソースファイルをコンパイルすることによって作成されます。
適切なmakefileが存在すると、いくつかのソースファイルを変更するたびに、この単純なシェルコマンド 作る すべての必要な再コンパイルを実行するのに十分です。 makeプログラムは、makefileデータベースとファイルの最終変更時刻を使用して、更新が必要なファイルを決定します。それらのファイルごとに、データベースに記録されたコマンドを発行します。
makeユーティリティはmakefile内のコマンドを実行して、1つ以上のターゲット名を更新します。 名 典型的にはプログラムである。ない場合-f オプションが存在する場合、makeはmakefileを探しますGNUmakefile, メイクファイル、およびメークファイル、その順に。
通常、makefileをMakefileまたはMakefileのどちらかと呼ぶべきです。 (Makefileを使うことをお勧めします それはディレクトリリストの先頭近くに顕著に現れます。README)最初の名前であるGNUmakefileは、ほとんどのメイクファイルではお勧めできません。 GNU makeに固有のメイクファイルを持っていて、他のバージョンのmakeが理解できないメイクファイルがあれば、この名前を使うべきです。 makefileが -標準入力が読み取られます。
ザ 作る ユーティリティーは、ターゲットが最後に変更された後に変更された前提条件ファイル、またはターゲットが存在しない場合に、ターゲットを更新します。
オプション
ザ -b そして -m オプションはmakeの他のバージョンとの互換性のために無視されます。
-C dir makefileを読んだり、何か他のことをする前に、ディレクトリdirに変更されます。複数の-C オプションが指定されている場合、それぞれは前のものと相対的に解釈されます。-C/ -C等 は-C / etc。これは通常、makeの再帰的な呼び出しで使用されます。
ザ -d オプションは、通常の処理に加えてデバッグ情報を出力します。デバッグ情報には、どのファイルがリメイクされているか、どのファイルが比較されているか、どんな結果でどのファイルが実際に再作成されなければならないか、暗黙のルールが適用されるか、 。
ザ -e オプションはmakefileからの変数よりも環境優先順位から取った変数を与えます。
ザ -f ファイル オプション使用 ファイル メークファイルとして。
ザ -私 オプションは、ファイルを再作成するために実行されるコマンドのすべてのエラーを無視します。
ザ -私 指 オプションはディレクトリを指定する 指 インクルードされたメイクファイルを検索します。複数の-私 オプションはいくつかのディレクトリを指定するために使用され、ディレクトリは指定された順序で検索されます。 makeの他のフラグへの引数とは異なり、-私 フラグはフラグの直後に来るかもしれません:-Idir 許可されるだけでなく、-I dir . この構文は、Cプリプロセッサの-私 フラグ。
ザ -j jobs optionは同時に実行するジョブ(コマンド)の数を指定します。複数ある場合-j 最後のオプションが有効です。もし-j オプションは引数なしで与えられ、 makeは同時に実行できるジョブの数を制限しません。
ザ -k エラーの後、できるだけ多くのオプションが続行されます。失敗したターゲットとそれに依存するターゲットは再作成できませんが、これらのターゲットの他の依存関係はすべて同じように処理できます。
ザ -l そして -lロード optionsは、他のジョブが実行されていて、負荷平均が最低でも新しいジョブ(コマンド)を開始しないことを指定します負荷 (浮動小数点数)。引き数を指定しないと、以前の負荷制限が削除されます。
ザ -n オプションは、実行されるコマンドを出力しますが、実行しません。
ザ -o ファイル オプションは、 ファイル その依存関係よりも古いものであっても、変更のために何かをリメイクしません ファイル 。基本的にファイルは非常に古いものとして扱われ、その規則は無視されます。
ザ -p オプションは、メークファイルを読み取った結果のデータベース(ルールおよび変数値)を出力します。通常どおりに実行されます。これにより、バージョン情報も表示されます。-v スイッチ(下記参照)。ファイルを再作成せずにデータベースを印刷するには、作る -p -f / dev / null .
ザ -q オプションは質問モードを設定します。コマンドを実行したり何かを印刷したりしないでください。指定されたターゲットがすでに最新であればゼロの終了ステータスを返し、それ以外の場合はゼロ以外のステータスを返します。
ザ -r オプションは組み込み暗黙ルールの使用を排除します。また、サフィックスルールのサフィックスのデフォルトリストをクリアします。
ザ -s オプションは、操作を停止します。実行されたときにコマンドを印刷しません。
ザ -S オプションを選択すると、-k オプション。これは再帰的なmakeを除いて決して必要ではありません どこで-k MAKEFLAGSを介してトップレベルのmakeから継承されるかもしれないし、-k あなたの環境内のMAKEFLAGSにあります。
ザ -t オプションは、コマンドを実行する代わりにファイルに触れます(実際に変更せずに最新のものをマークします)。これは、makeの将来の呼び出しを欺くために、コマンドが実行されたことをふりまとうために使用されます。
ザ -v オプションはmakeプログラムのバージョンと著作権、作者のリスト、および保証のないことの通知を表示します。
ザ -w オプションは、他の処理の前後に作業ディレクトリを含むメッセージを出力します。再帰的なmakeの複雑なネストからのエラーを追跡するのに便利です コマンド。
ザ -W ファイル オプションがターゲットとふりをする ファイル ちょうど修正されました。また、-n これは、そのファイルを変更する場合に起こることを示しています。なし-n、それはほぼ同じです。タッチ makeを実行する前に、指定されたファイルに対してコマンドを実行します。ただし、変更時刻はmakeの想像力でのみ変更されます。




