2

大規模なプロジェクトのコンパイル時間を短縮したい。プライマリコンパイラはVisualStudio2010ですが、一部のコードはgccでコンパイルされます。現在、すべての.hファイルにガードと#pragmaが一度含まれていることを確認することを計画しています。これにより、VisualStudioとgccの両方でコンパイル速度が向上します。以前はstdafxにさらに多くのヘッダーを配置していましたが、これらのヘッダーの1つが変更された場合、プリコンパイル済みヘッダーを再コンパイルせずにcppをコンパイルすると、変更が有効にならないという欠点がありました。これはしばしば私たちを混乱させました。現在の計画では、すべての安定したヘッダーまたは制御できないヘッダーにプリコンパイル済みヘッダーを使用し(変更されません)、その他すべての場合は、コンパイル速度を上げるためにインクルードガードと#pragmaを1回使用します。このパスがうまく計画されていない理由はありますか?インクルードガード/#pragma1回とプリコンパイル済みヘッダーまたはその逆のコンパイル速度には利点がありますか?

4

1 に答える 1

2

採用しているアプローチは適切ですが、ヘッダーの1つを変更してもプリコンパイル済みヘッダーの再コンパイルがトリガーされなかった場合は、プロジェクトの依存関係を確認する必要があります。

インクルードを完全に回避するなど、コンパイル時間を短縮するのに役立つ他のことがあります。つまり、ヘッダーで前方宣言を使用し、cppファイルにのみ含めます。これにより、コンパイル時の依存関係が減り、コンパイルが高速化されます。

私はプリコンパイル済みヘッダーのファンではないので、通常、必要なものはすべて含めるようにし、含まないものは含めないようにします。

于 2011-11-18T14:08:16.470 に答える