戻る
gnuのmakeコマンドのマニュアル。
================================
名前
make - プログラム群を管理するための GNU make ユーティリ
ティ
書式
make [ -f makefile ] [ option ] ... target ...
注意
このオンラインマニュアルは、 GNU make のドキュメントの一部
を抜粋したものである。このファイルはあまり頻繁には更新され
ない。というのも、GNU プロジェクトでは nroff が使われて い
な い からである。完全かつ最新の内容のドキュメントを見るに
は、info ファイル make.info を参照すること。これは texinfo
のソースファイル make.texinfo から生成される。
説明
make ユーティリティの目的は、大きなプログラムの中の再コン
パイルする必要がある部分を自動的に決定し、再コンパイルのた
め のコマンドを実行することである。このマニュアルでは、GNU
が実装した make の説明を行っている。これは Richard Stall-
man と Roland McGrath が書いたものである。例としては C 言
語のプログラムを用いているが、これは C 言語が最も一般的 だ
からである。 make は、シェルコマンドからコンパイラを起動で
きるどんなプログラミング言語とでも組み合わせて使用できる。
実 際、 make の利用対象はプログラムだけに限られない。 make
は、あるファイルを書き換えたら、その書き換えたファイルを元
にして別のファイルも自動的に更新しなければならないような任
意の作業で利用できる。
make を使う準備をするためには、まず makefile と呼 ば れ る
ファイルを書かなければならない。このファイルは、プログラム
を構成するファイル間の関係と各ファイルを更新するためのプロ
グ ラ ムを記述したものである。プログラムの場合は普通、実行
ファイルはオブジェクトファイルによって更新され、この オ ブ
ジェクトファイルもまたソースファイルのコンパイルによって生
成される。
適切な makefile さえあれば、ソースファイルを一部変更する度
に
make
という簡単なシェルコマンドを実行するだけで、必要な再コンパ
イルが全て行われる。 make プログラムは、makefile デー タ
ベースとファイルの最終更新時刻を用いて、更新する必要がある
ファイルを見つける。このようなファイルに対して、 make は
データベースに記録されているコマンドを実行する。
make は makefile 中のコマンドを実行して、1 つ以上のター
ゲット 名称を更新する。この 名称は普通はプログラムである。
-f が 無 い場合、 make は makefile として、 GNUmakefile,
makefile, Makefile をこの順に参照する。
通常、ユーザが makefile として使うべきなのは、 makefile ま
たは Makefile である。 (筆者は Makefile を推奨する。なぜな
ら、この名前であれば常にディレクトリ表示の先頭近くに現われ
るし、 README のような他の重要ファイルのすぐ近くに来るから
である。) 最初にチェックされる名前である GNUmakefile は、
大 抵 の 場合は好ましくない。この名前を使うべきなのは、GNU
make に特化しており、他のバージョンの make では処理でき な
い makefile を使う場合である。 makefile が `-' ならば、標
準入力が読み込まれる。
make がターゲットを更新するのは、ターゲットが依存してい る
必要ファイルがターゲットより後に変更された場合と、ターゲッ
トが存在しない場合である。
オプション
-b
-m これらのオプションは無視される。これらは他のバー ジョ
ンの make との互換性のためのものである。
-C dir
makefile を読み込むなどの動作の前に、ディレクトリ dir
に移動する。複数の -C オプションが指定されて い る 場
合、 それぞれは前の指定に対する相対パスと解釈される。
例えば、 -C / -C etc は -C /etc と同じ意味である。 こ
の オプションは通常、 make を再帰的に呼び出す時に使わ
れる。
-d 通常の処理情報に加えて、デバッグ情報を出力 す る。 デ
バッ グ 情 報に含まれるのは、再構築の対象となっている
ファイル、比較されるファイル時間とその結果、実際に 再
構 築する必要があるファイル、候補になっていたり実際に
適用される暗黙のルールなど、 make が動作を決めるた め
に必要なもの全てである。
-e 環境変数から与える変数を指定する。これは makefile の
変数よりも優先される。
-f file
file を makefile として使用する。
-i ファイルの再構築時に実行したコマンドで起きたエラー を
全て無視する。
-I dir
イ ンクルードする makefile を検索するディレクトリ dir
を指定する。複数の -I オプションを使って複数のディ レ
ク トリを指定した場合、ディレクトリの検索は指定した順
で行われる。 make の他のフラグに対する引き数 と 異 な
り、 -I に与える引き数は、フラグの直後に記述できる。
つまり、 -Idir という記述も -I dir と共に許される。こ
の 記法を許すのは、C プリプロセッサの -I フラグとの互
換性のためである。
-j jobs
同時に実行できるジョブ(コマンド)の数を指定す る。 -j
オ プションが複数個指定された場合は、最後の指定が有効
になる。引き数無しで -j オプションが与えられた場 合、
make は同時に実行できるジョブの数を制限しない。
-k エラーが起きてもできる限り実行を継続しようとする。失
敗したターゲットとそのターゲットに依存しているファ イ
ル は再生成されないものの、そのターゲットに関する他の
依存関係は処理することができる。
-l
-l load
他のジョブが動作しており、ロードアベレージが少なく と
も load (浮動小数)ならば、新しいジョブ(コマンド)を実
行しないことを指定する。引き数無しの場合には、以前 に
指定した負荷の制限が取り除かれる。
-n 実行するコマンドの表示だけを行い、実際の実行を行わな
い。
-o file
file が依存先のファイルより古い場合であっても再構築を
行 わなず、 file が変更されても他のファイルの再構築を
一切行わない。本質的には、そのファイルは非常に古い も
のとして扱われ、規則が無視される。
-p makefile を読み込んで得られたデータベース(規則と変数
の値)を出力する。特に指定しない限り、その後の動作は通
常 通りである。また、 -v オプションで得られるバージョ
ン情報も出力する。ファイルを全く再構築することな く、
デー タ ベースの表示だけを行うには make -p -f/dev/nul
を用いること。
-q 「問い合わせモード」で動作する。コマンドを全く実行 せ
ず、 何も表示しない。ただ、指定されたターゲットが既に
最新ならば終了ステータス 0 を返し、そうでなけれ ば 0
でないステータスを返す。
-r 組み込みの暗黙的ルールを使用しない。また、添字規則で
使うデフォルトの添字のリストも全て消去する。
-s 静かに動作する。コマンドを実行する際に、コマンドの 表
示を行わない。
-S -k オプションの影響を打ち消す。このオプションが必要に
なるのは、 make を再帰的に用いているために -k オ プ
ションがトップレベルの make から MAKEFLAGS を通じて継
承される場合や、環境変数 MAKEFLAGS で -k を設定してい
る場合だけである。
-t コマンドを実行せずにファイルにタッチする(実際にはファ
イルを変更せず、最新の印を付ける)。このオプションを使
う と見かけ上コマンドが実行されたことになり、後で起動
する make をだますことができる。
-v make プログラムのバージョンおよび著作権表示、作者のリ
スト、無保証であることの宣言を出力する。
-w 他の処理を行う前後に、作業ディレクトリを表示する。再
帰的な make コマンドが複雑な入れ子になっている状況 で
エラーを追跡する際に便利である。
-W file
ター ゲット file が変更されたばかりのものとして動作す
る。 -n フラグを指定している場合、そのファイルを変 更
す るとどうなるかが表示される。 -n が指定されていない
場合の動作は、 make の実行前に、指定されたファイル に
対して touch を行った時とほぼ同じである。ただし、修正
時刻が変更されるのは make の内部だけである点 が 異 な
る。
関連項目
The GNU Make Manual
バグ
The GNU Make Manual の「問題点とバグ(Problems and Bugs)」
の章を参照すること。
著者
このオンラインマニュアルはスタンフォー ド 大 学 の Dennis
Morse 氏が寄付したものである。その後 Roland McGrath が改訂
している。