ビルドシステムを見てみると、それらの多く (SCons、bjam、cmake、Tundra など) には #include スキャナーが組み込まれています。しかし、gcc と icc は、C++ ファイルが依存するヘッダー ファイルの名前を出力する-MMD(または) オプションを提供します。-MD
-MMD依存関係オプションは信頼できるようです。C ファイルにを追加する#includeと、そのタイムスタンプが変更されるため、ビルド システムが再コンパイルします。ヘッダー ファイルにを追加する#includeと、そのタイムスタンプが変更され、影響を受けるすべての C ファイルが再コンパイルされます。
スキャン システムの破損を含めますが、-MMD堅牢であるように思えます。どちらが最適で、その理由は?