>>307,308,309
レスありがとうございます。そして、混乱してきました・・・
オイラリーのmake本を見ているのですが、p23によると
a.out: source.o
と書けば、makeはsource.oをターゲットとして持つエントリがないか探しにいき、あればそれを実行、
なければサフィックスルール(あれば)を適用するそうです。だから、
a:b
b:c
c:d
のようにすれば連鎖的に依存関係が伝わると思ったのですが、違うのでしょうか?

あと、「makefile」でググるとトップにでてくる(おそらく初心者は誰しも目を通すと思われる)サイトにも同じ例があります
--------------引用----------------------------------------
〜 Makefile の例 (1) 愚直バージョン 〜

# Makefile 1 (「#」は行末までのコメント)

a.out: sub1.o sub2.o # ターゲット a.out の依存ファイルは sub1.o, sub2.o
cc -o a.out sub1.o sub2.o # a.out の生成コマンド

sub1.o: sub1.c # sub1.o の依存ファイルは sub1.c
cc -c sub1.c # sub1.o の生成コマンド
sub2.o: sub2.c # sub2.o の依存ファイルは sub2.c
cc -c sub2.c # sub2.o の生成コマンド

# header.h はコンパイル時に include されるので、実際には何もしなくてよい
sub1.c: header.h # sub1.c の依存ファイルは header.h
sub2.c: header.h # sub2.c の依存ファイルは header.h
---------------引用、終-----------------------------------------