連鎖的にといっても無条件で依存ファイルがコンパイルされるわけじゃない。
被依存ファイルのタイムスタンプが、依存ファイルが新しい場合にmakeルールに従った処理が行われる。

.hファイルが書き換わったとしても、.cファイルの更新が行われるわけではないので、.cのタイムスタンプは変わらず、
したがって.oはコンパイルされない。


どうして .cを.hに依存させたければ、touch コマンドでも使ってルールを書いてやればいいんじゃね?