コマンドラインのマニュアル

Man » make マニュアルオンライン - make man ページの詳しいオンラインドキュメント

🌍
make - GNU Make ユーティリティ。プログラム群の保守に使用。

概要

make [オプション]... [ターゲット]...

説明

make ユーティリティは、大規模なプログラムのどの部分を再コンパイルする必要があるかを自動的に判断し、再コンパイルするためのコマンドを発行します。このマニュアルでは、Richard Stallman と Roland McGrath によって作成され、現在は Paul Smith によって保守されている GNU 実装の make について説明します。例として C プログラムを使用していますが、これは一般的なものです。make は、シェルコマンドで実行できるコンパイラを持つ任意のプログラミング言語で使用できます。実際には、make はプログラムに限定されません。make を使用して、他のファイルが変更されたときにファイルを自動的に更新する必要があるタスクを記述できます。

make を使用するには、プログラム内のファイル間の関係を記述し、各ファイルを更新するためのコマンドを提供する「makefile」と呼ばれるファイルを作成する必要があります。プログラムでは、通常、実行可能ファイルはオブジェクトファイルから更新され、オブジェクトファイルはソースファイルをコンパイルすることで作成されます。

適切な makefile が存在する場合、ソースファイルを変更するたびに、次の単純なシェルコマンドを実行するだけで十分です。

make

make プログラムは、makefile の説明とファイルの最終更新時刻を使用して、どのファイルを更新する必要があるかを決定します。これらのファイルごとに、makefile に記録されているコマンドを発行します。

make は、makefile 内のコマンドを実行して、1 つ以上のターゲットを更新します。ターゲットは通常、プログラムです。-f オプションが指定されていない場合、make は GNUmakefile、makefile、Makefile の順に makefile を検索します。

通常、makefile のファイル名を makefile または Makefile とする必要があります。(Makefile を推奨します。これは、ディレクトリリストの先頭に目立つように表示され、README などの他の重要なファイルと一緒に表示されます。)最初にチェックされる名前である GNUmakefile は、ほとんどの makefile には推奨されません。GNU Make 固有の makefile であり、他のバージョンの make では理解できない場合は、この名前を使用する必要があります。makefile が '-' の場合、標準入力が読み込まれます。

make は、ターゲットが依存する前提条件ファイルが、ターゲットが最後に更新されてから変更された場合、またはターゲットが存在しない場合に、ターゲットを更新します。

オプション

-b, -m

これらのオプションは、他のバージョンの make との互換性のために無視されます。

-B, --always-make

すべてのターゲットを無条件に make します。

-C dir, --directory=dir

makefile を読み込んだり、その他の操作を行う前に、ディレクトリ dir に変更します。-C オプションが複数指定された場合、それぞれは前のオプションを基準として解釈されます。-C / -C etc は、-C /etc と同等です。これは、通常、make の再帰的な呼び出しで使用されます。


-d  通常の処理に加えて、デバッグ情報を出力します。デバッグ情報には、再構築の対象となるファイル、比較されるファイル時間、その結果、実際に再構築する必要があるファイル、考慮される暗黙のルール、および適用されるルールなど、makeがどのように決定するかに関する興味深いすべての情報が含まれます。

--debug[=FLAGS]
通常の処理に加えて、デバッグ情報を出力します。FLAGSが省略された場合、-dを指定した場合と同じ動作になります。FLAGSは、次の名前のいずれか、またはカンマまたはスペースで区切られた名前の組み合わせにすることができます。最初の文字だけが重要で、残りは省略できます。allはすべてのデバッグ出力(-dを使用する場合と同じ)、basicは基本的なデバッグ、verboseはより詳細な基本的なデバッグ、implicitは暗黙のルール検索操作の表示、jobsはコマンドの実行に関する詳細、makefileはmakefileの再構築中のデバッグ、printは実行されるすべてのレシピ(サイレントレシピも含む)の表示、およびwhyはmakeが各ターゲットを再構築すると決定した理由の表示です。noneを使用すると、以前のすべてのデバッグフラグが無効になります。

-e, --environment-overrides
環境変数から取得した変数を、makefile内の変数よりも優先させます。

-E string, --eval string
makefileの解析を開始する前に、eval関数を使用してstringを解釈します。

-f file, --file=file, --makefile=FILE
fileをmakefileとして使用します。

-i, --ignore-errors
makefileの再構築に使用されるコマンドで発生したすべてのエラーを無視します。

-I dir, --include-dir=dir
インクルードするmakefileの検索対象となるディレクトリdirを指定します。複数の-Iオプションを使用して複数のディレクトリを指定した場合、ディレクトリは指定された順序で検索されます。makeの他のフラグの引数とは異なり、-Iフラグで指定されたディレクトリは、フラグの直後に記述できます。-Idirは許可されており、これはCプリプロセッサの-Iフラグとの互換性のために許可されています。

-j [jobs], --jobs[=jobs]
同時に実行するジョブ(コマンド)の数を指定します。-jオプションが複数ある場合、最後のものが有効になります。-jオプションが引数なしで指定された場合、makeは同時に実行できるジョブの数を制限しません。

--jobserver-style=style
使用するジョブサーバーのスタイル。スタイルは、fifo、pipe、またはsem(Windowsのみ)のいずれかになります。

-k, --keep-going
エラーが発生した後も、可能な限り処理を続行します。失敗したターゲットと、それに依存するターゲットは再構築できませんが、これらのターゲットの他の依存関係はすべて同じように処理できます。

-l [load], --load-average[=load]
他のジョブが実行中で、負荷平均がload(浮動小数点数)以上の場合、新しいジョブ(コマンド)を開始しないように指定します。引数がない場合、以前の負荷制限が削除されます。

-L, --check-symlink-times

シンボリックリンクとターゲットの最新の mtime を使用します。

-n, --just-print, --dry-run, --recon

実行するコマンドを出力しますが、実際には実行しません(特定の状況を除く)。

-o file, --old-file=file, --assume-old=file

ファイル file を、依存関係が古い場合でも再作成せず、file の変更によって何かが再作成されることもありません。基本的に、ファイルは非常に古いものとして扱われ、そのルールは無視されます。

-O[type], --output-sync[=type]

-j オプションで複数のジョブを並行して実行する場合、各ジョブの出力がまとめて収集されるようにします。出力が他のジョブの出力と混ざり合うことはありません。type が指定されていない場合、または type が target の場合、各ターゲットのレシピ全体の出力がまとめてグループ化されます。type が line の場合、レシピ内の各コマンド行の出力がまとめてグループ化されます。type が recurse の場合、再帰的な make の出力全体がまとめてグループ化されます。type が none の場合、出力同期が無効になります。

-p, --print-data-base

makefile を読み込んだ結果得られるデータベース(ルールと変数の値)を出力してから、通常どおり、または他の指定に従って実行します。これには、-v オプションで与えられるバージョン情報も出力されます。データベースを出力して、ファイルを再作成しようとしない場合は、make -p -f/dev/null を使用します。

-q, --question

「質問モード」。コマンドを実行したり、何も出力したりしません。指定されたターゲットがすでに最新である場合は終了ステータス 0 を返し、そうでない場合は 0 以外の値を返します。

-r, --no-builtin-rules

組み込みの暗黙的なルールを使用しないようにします。また、サフィックスルールのデフォルトのサフィックスリストもクリアします。

-R, --no-builtin-variables

組み込み変数を定義しないようにします。

-s, --silent, --quiet

サイレントモード。コマンドが実行されるときにコマンドを出力しません。

--no-silent
-s オプションの効果をキャンセルします。

-S, --no-keep-going, --stop
-k オプションの効果をキャンセルします。

-t, --touch

ファイルに触れて(実際には変更せずに最新の状態であるとマークします)、コマンドを実行する代わりに、将来の make の呼び出しを欺きます。

--trace

各ターゲットの処理に関する情報(ターゲットが再構築される理由と、再構築するために実行されるコマンド)を出力します。

-v, --version

make プログラムのバージョン、著作権、作成者リスト、および保証がないという通知を出力します。

-w, --print-directory

他の処理の前後で、作業ディレクトリを含むメッセージを出力します。複雑な再帰的な make コマンドによるエラーを追跡するのに役立つ場合があります。

--no-print-directory

-w が暗黙的にオンになっている場合でも、-w をオフにします。

--shuffle[=MODE]

目標と前提条件の順序をシャッフルするように有効にします。MODE は、shuffle モードを無効にする none、前提条件をランダムな順序でシャッフルする random、前提条件を逆順で考慮する reverse、または特定のシード値 を使用してランダムモードを有効にする整数です。MODE が省略された場合、デフォルトは random です。


-W file, --what-if=file, --new-file=file, --assume-new=file
ターゲットファイルが変更されたばかりであるかのように振る舞います。-n フラグと組み合わせて使用すると、実際にファイルを変更した場合に何が起こるかを確認できます。-n フラグなしで使用すると、指定されたファイルに対して `touch` コマンドを実行するのとほぼ同じですが、変更時刻は make の仮想的な環境でのみ変更されます。

--warn-undefined-variables
未定義の変数が参照された場合に警告を表示します。

終了ステータス

GNU Make は、すべての Makefile が正常に解析され、かつビルドされたターゲットにエラーがない場合に、0 のステータスで終了します。-q フラグが使用され、make がターゲットを再ビルドする必要があると判断した場合、ステータス 1 が返されます。何らかのエラーが発生した場合、ステータス 2 が返されます。

関連項目

make の完全なドキュメントは、Texinfo マニュアルとして維持されています。info および make プログラムがサイトに適切にインストールされている場合、次のコマンド

info make

を使用すると、完全なマニュアルにアクセスできます。

バグ

GNU Make マニュアルの「問題とバグ」の章を参照してください。

著者

このマニュアルページは、スタンフォード大学のデニス・モースが作成しました。マイク・フライシンガーが追加の更新を行いました。ローランド・マクグラスが再構成しました。ポール・スミスがメンテナンスを行っています。

著作権

Copyright © 1992-1993, 1996-2023 Free Software Foundation, Inc. このファイルは GNU Make の一部です。

GNU Make はフリーソフトウェアであり、GNU General Public License の条項に従って、再配布または変更することができます。ライセンスはバージョン 3、またはそれ以降のバージョンを使用できます。

GNU Make は有用であることを期待して配布されますが、いかなる保証も行いません。特に、商品性または特定の目的への適合性の黙示的な保証もありません。詳細は GNU General Public License を参照してください。

このプログラムと一緒に GNU General Public License のコピーを受け取っているはずです。もしそうでない場合は、https://www.gnu.org/licenses/ を参照してください。