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