6

ビルドシステムを見てみると、それらの多く (SCons、bjam、cmake、Tundra など) には #include スキャナーが組み込まれています。しかし、gcc と icc は、C++ ファイルが依存するヘッダー ファイルの名前を出力する-MMD(または) オプションを提供します。-MD

-MMD依存関係オプションは信頼できるようです。C ファイルにを追加する#includeと、そのタイムスタンプが変更されるため、ビルド システムが再コンパイルします。ヘッダー ファイルにを追加する#includeと、そのタイムスタンプが変更され、影響を受けるすべての C ファイルが再コンパイルされます。

スキャン システムの破損を含めますが、-MMD堅牢であるように思えます。どちらが最適で、その理由は?

4

1 に答える 1

11

-MMDあなたが与える理由などのために、最高です。

通常のコンパイル プロセスの一部としてコンパイラに依存関係を出力させることで、-Iパスやマクロなどのまったく同じ一連のコンパイラ オプションが、コンパイル時および依存関係の検出時に有効になります。これは、同じオプションを 2 つの別々のツールに使用することを保証するよりも、冗長性が低く、エラーが発生しにくくなります。

于 2012-08-24T15:59:46.077 に答える