makeの使い方

プログラムを作るときは、コンパイル→デバッグ→コンパイル→デバッグ→...という 作業を繰り返します。コンパイルの度にコマンドラインから命令を打ち込んでいたの ではたまりません。きっとバッチファイルを作ってそれを1発起動して待っていること でしょう。 下の図をバッチファイルで記述すると次のようになるでしょう。
# バッチファイルの例
cc -c foo.c
cc -c bar.c
cc -o foobar foo.o bar.o

bar.cを直して再度コンパイルしてみる場合を考えてみましょう。 コンパイル必要なのは、bar.cだけなので、

cc -c bar.c
cc -o foobar foo.o bar.o
の2つだけでいいはずです。foo.cのソースコードには手を加えていないので もう一度コンパイルしても前回とまったく同じfoo.oが作られるだけです。つまり foo.cをコンパイルするのは時間の無駄ということに なります。このように必要な作業だけを選んで順番にやってくれたら 楽ですよねぇ。これをやってくれるのがmakeです。

makeでは、Makefileというファイルにバッチファイルでやっていたようなことを 書いておきます。

foobar: foo.o bar.o
	cc -o foobar foo.o bar.o

foo.o: foo.c
	cc -c foo.c

bar.o: bar.c
	cc -c bar.c 
このファイル(Makefile)を同じディレクトリに作り、コマンドラインから
% make
と入力するだけで作業を行なってくれます。

「ファイルfoo.oはファイルfoo.cをコンパイルして作られる」という ルールを書いてみましょう。

foo.o: foo.c
	cc -c foo.c
最初の行は依存関係を表します。 依存関係とは、「foo.oはfoo.cから作られる」ということです。 実際にどうやって作るかは依存関係の次の行に書きます。 foo.oは、foo.cをコンパイルして作るので、そのときのコマンド 'cc -c foo.c'を書きます。 先頭にTABを入れるということに注意してください。先頭にTABが あるかどうかで依存関係か実行文かを判断しています。