プログラム群を管理するための GNU make ユーティリティ
makefile
] [ option ] ...
GNU make
のドキュメントの一部を抜粋したものである。このファイルはあまり頻繁には
更新されない。というのも、GNU プロジェクトでは nroff が使われていない
からである。完全かつ最新の内容のドキュメントを見るには、info ファイル
make.info
を参照すること。これは texinfo のソースファイル
make.texinfo
から生成される。
make
ユーティリティの目的は、大きなプログラムの中の再コンパイルする必要があ
る部分を自動的に決定し、再コンパイルのためのコマンドを実行することであ
る。
このマニュアルでは、GNU が実装した
make
の説明を行っている。これは Richard Stallman と Roland McGrath が書いた
ものである。
例としては C 言語のプログラムを用いているが、これは C 言語が最も一般的
だからである。
make
は、シェルコマンドからコンパイラを起動できるどんなプログラミング言語と
でも組み合わせて使用できる。
実際、
make
の利用対象はプログラムだけに限られない。
make
は、あるファイルを書き換えたら、その書き換えたファイルを元にして別のファ
イルも自動的に更新しなければならないような任意の作業で利用できる。
make
を使う準備をするためには、まず
makefile
と呼ばれるファイルを書かなければならない。このファイルは、プログラムを
構成するファイル間の関係と各ファイルを更新するためのプログラムを記述し
たものである。プログラムの場合は普通、実行ファイルはオブジェクトファイ
ルによって更新され、このオブジェクトファイルもまたソースファイルのコン
パイルによって生成される。
適切な makefile さえあれば、ソースファイルを一部変更する度に
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
-C dir
dir
に移動する。複数の
-C
オプションが指定されている場合、それぞれは前の指定に対する相対パスと解
釈される。例えば、
-C /
-C etc
は
-C /etc
と同じ意味である。このオプションは通常、
make
を再帰的に呼び出す時に使われる。
-d
make
が動作を決めるために必要なもの全てである。
-e
-f file
file
を makefile として使用する。
-i
-I dir
dir
を指定する。
複数の
-I
オプションを使って複数のディレクトリを指定した場合、ディレクトリの検索
は指定した順で行われる。
make
の他のフラグに対する引き数と異なり、
-I
に与える引き数は、フラグの直後に記述できる。
つまり、
-I dir
という記述も
-I dir
と共に許される。
この記法を許すのは、C プリプロセッサの
-I
フラグとの互換性のためである。
-j jobs
-k
-l
-l load
load
(浮動小数)ならば、新しいジョブ(コマンド)を実行しないことを指定する。
引き数無しの場合には、以前に指定した負荷の制限が取り除かれる。
-n
-o file
file
が依存先のファイルより古い場合であっても再構築を行わなず、
file
が変更されても他のファイルの再構築を一切行わない。本質的には、そのファ
イルは非常に古いものとして扱われ、規則が無視される。
-p
-q
-r
-s
-S
make
を再帰的に用いているために
-k
オプションがトップレベルの
make
から MAKEFLAGS を通じて継承される場合や、環境変数 MAKEFLAGS で
-k
を設定している場合だけである。
-t
-v
make
プログラムのバージョンおよび著作権表示、作者のリスト、無保証であること
の宣言を出力する。
-w
make
コマンドが複雑な入れ子になっている状況でエラーを追跡する際に便利である。
-W file
file
が変更されたばかりのものとして動作する。
-n
フラグを指定している場合、そのファイルを変更するとどうなるかが表示され
る。
-n
が指定されていない場合の動作は、
make
の実行前に、指定されたファイルに対して
touch
を行った時とほぼ同じである。ただし、修正時刻が変更されるのは
make
の内部だけである点が異なる。
The GNU Make Manual
The GNU Make Manual
の「問題点とバグ(Problems and Bugs)」の章を参照すること。