decl_func: decl_func0.o decl_func3.o gcc -o decl_func decl_func0.o decl_func3.o decl_func0.o: decl_func0.c decl_func3.o: decl_func3.c decl_func0.h clean: rm *.oで、例えば、
kamada@cygwin% makeとすると、自動的に compile が行われます。 make file 中のルールは、
ゴール: 依存ファイル (タブの後に)実行コマンドと書かれています。
最初のゴール: decl_func は、decl_func0.o, decl_func0.o, decl_func0.h のいずれかが再コンパイルする必要が あれば、その再コンパイルを行った後、2 行目のコマンド(リンク操作)を行う という意味です。 で、例えば decl_func3.o の再コンパイルは、decl_func3.c か decl_func0.h が 書き換えられた際におこなわれることになります。 この際、実施コマンドが書かれていませんが、省略された場合、 XXX.o は、gcc $(CFLAGS) -c XXX.cで作成されると決められています。 というわけで、皆さんは依存関係だけ書いておけば、 書き換えたファイルに応じた再コンパイルを行ってくれることになります。 $(CFLAGS) のところは、ユーザが
CFLAGS = -Wallなどと書いておくとそれが利用されることになります。
make は結構奥が深いので、詳しいことは参考書などを見てください。
2001.10.29/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp