Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all 

名前
make - プログラム群を管理するための GNU make ユーティリティ
書式
make [OPTION]... [TARGET]...
説明
make ユーティリティの目的は、大きなプログラムの中の再コンパイルする必要がある部分を自動的に決定し、再コン パイルのためのコマンドを実行することです。 このマニュアルでは、GNU が実装した make の説明を行っています。 これは Richard Stallman と Roland McGrath が書いたもので、 現在は Paul Smith により維持されています。 例 として C 言語のプログラムを用いていますが、これは C 言語が最も一般的だからです。 make は、シェルコマンド からコンパイラーを起動できるどんなプログラミング言語とでも組み合わせて使用できます。 実際、 make の利用対 象はプログラムだけに限りません。 make は、 あるファイルを書き換えたら、 その書き換えたファイルを元にし て、 別のファイルも自動的に更新しなければならないような任意の作業で利用できます。 make を使う準備として、 まず makefile と呼ばれるファイルを書かねばなりません。 このファイルは、 プログラ ムを構成するファイル間の関係と、 各ファイルを更新するためのプログラムを記述したものです。 プログラムに関 して言えば、 普通、 実行ファイルはオブジェクトファイルから更新され、 このオブジェクトファイルは、 ソース ファイルのコンパイルによって生成されます。 適切な makefile さえあれば、 ソースファイルを一部変更するたびに make という簡単なシェルコマンドを実行するだけで、 必要な再コンパイルはすべて行われます。 make プログラムは、 makefile 記述とファイルの最終更新時刻を用いて、 更新する必要があるファイルを見つけます。 そのファイルに対 して、 make は makefile に書かれているコマンドを実行します。 make は makefile 内のコマンドを実行して、 1 つ以上のターゲット name を更新します。 この name は普通はプロ グラムです。 -f が無い場合、 make は makefile として、 GNUmakefile, makefile, Makefile をこの順に参照しま す。 通常、ユーザーが makefile として使うべきなのは、 makefile または Makefile です。 (推奨するのは Makefile です。 なぜなら、 この名前であれば、 常にディレクトリ表示の先頭近くに現われ、 README のような他の重要ファ イルのすぐ近くに来るからです。) 最初にチェックされる名前である GNUmakefile は、たいていの場合は好ましく ありません。 この名前を使うのは、GNU make に特化していて、他のバージョンの make では処理できない makefile を使う場合です。 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 には次の値を指定することができます。 a は全てのデバッグ情報を出力します (-d と同じ)。 b は基本的なデバッグ情報を出力します。 v は基本的なデバッグ情報をより詳細に出力します。 i は暗黙のルールを表示します。 j はコマンドの起動の詳細を出力します。 m は makefile の再 make 時にデ バッグ情報を出力します。 n はそれまでのデバッグフラグをすべて無効化します。 -e, --environment-overrides 環境変数から与える変数を指定します。 これは makefile の変数よりも優先されます。 -E string, --eval string eval 関数を用いて string を解釈します。これはどの makefile の解析よりも先に行われます。 -f file, --file=file, --makefile=FILE file を makefile として使用します。 -i, --ignore-errors ファイルの再構築時に、 実行したコマンドで起きたエラーをすべて無視します。 -I dir, --include-dir=dir インクルードする makefile を検索するディレクトリ dir を指定します。 複数の -I オプションを使って複数 のディレクトリを指定した場合、 ディレクトリの検索 は指定した順で行われます。 make の他のフラグに対す る引数と異なり、 -I に与える引数は、フラグの直後に記述できます。 つまり、 -Idir という記述も -I dir と共に許されます。 この記法を許すのは、C プリプロセッサの -I フラグとの互換性のためです。 -j [jobs], --jobs[=jobs] 同時に実行できる jobs (コマンド) の数を指定します。 -j オプションが複数指定された場合は、 最後の指定 が有効になります。 引数無しで -j オプションが与えられた場合、 make は同時に実行できるジョブの数を制 限しません。 -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 が未指定か 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 が暗黙で指定される場合でもオフになります。 -W file, --what-if=file, --new-file=file, --assume-new=file ターゲット file が変更されたばかりのものとして動作します。 -n フラグを指定している場合、 そのファイ ルを変更するとどうなるかが表示されます。 -n が指定されていない場合の動作は、 make の実行前に、 指定 されたファイルに対して touch を行った時とほぼ同じです。 ただし、修正時刻が変更されるのは make の内部 だけである点が異なります。 --warn-undefined-variables 未定義の変数が参照された際に警告を出します。
終了ステータス
すべての makefile が正常に読み込まれ、ビルド対象のどのターゲットも失敗しなかった場合、 GNU make はステー タス 0 で終了します。 -q フラグが使用され、 make がターゲットの再ビルドが必要と判断した場合には、 ステー タス 1 が返されます。 何かエラーが発生した場合は、 ステータス 2 が返されます。
関連項目
make の完全なドキュメントは Texinfo マニュアルとしてメンテナンスされています。info と make の両プログラム が適切にインストールされていれば、以下のコマンド info make を実行して完全なマニュアルを参照できます。
バグ
The GNU Make Manual の「問題点とバグ (Problems and Bugs)」の章を参照してください。
著者
このオンラインマニュアルはスタンフォード大学の Dennis Morse 氏が寄付したものです。 さらなる改訂が Mike Frysinger から提供されました。 その後 Roland McGrath が改訂しました。 現在は Paul Smith が保守を行ってい ます。
著作権
Copyright © 1992-1993, 1996-2020 Free Software Foundation, Inc. This file is part of GNU make. GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.