単一のコンパイルに含まれるすべてのファイルのどのコード行が実際に使用されているかを判断する可能性はありますか (gcc / g++ 自体を使用する可能性が最も高いですか?)
私は多くのサードパーティのインクルードを使用しており、コンパイルを高速化するために実際に使用されるコードにそれらを削除したいと考えています。
おそらく g++ は、多くのオプションの組み合わせによってこれを出力できますか?
私が提供できる最善のアドバイスは、巨大なインクルード ファイルを小さな断片に分割することです。これにより、開発者はシンボルを解決するために必要なファイルのみを含めることができます。
私のお気に入りの例はwindows.h
. メガ インクルード ファイルは、必要かどうかに関係なく、Windows API 全体を宣言します。ファイルを処理するための API のみが必要な場合は、ダイアログ ボックス用の API も入手できます。
モンスター インクルード ファイルのような一部のショップは、ソースに 1 つのファイルを含めるだけでよいためです。1 つの欠点は、すべてのソース ファイルがメガ インクルード ファイルに依存するようになったことです。インクルード ファイルの 1 つを変更すると、変更したヘッダー ファイルに依存するいくつかのモジュールではなく、システム全体が再構築されます。
私のプロジェクトでは、一度にいくつかのファイルしかコンパイルされません。通常は 5 未満です。これにより、平均ターンアラウンド タイム (変更してからビルドする) が非常に速くなります。システム全体は、サーバーまたは開発者によって一晩で再構築されます。変更されていないソース ファイルを再構築する必要はありません。
したがって、モジュールを分割して、毎回システムを再構築する必要がないようにします。