問題
使用するヘッダーのリストがあり、変更されないことがわかっているとします。たとえば、Cヘッダー、C ++ヘッダー、Boostヘッダーなどです。
CPPファイルのコンパイルごとにそれらを読み取るには時間がかかります。コンパイラーが同じヘッダーを何度も読み取り、同じヘッダーに対して同じコンパイル結果を何度も生成するため、これは生産的な時間ではありません。
これらのヘッダーが常に同じであることをコンパイラーに通知し、それらを何度も再コンパイルするのではなく、コンパイルされた結果をキャッシュする方法があるはずです。
ソリューション
プリコンパイル済みヘッダーはそれを考慮に入れているので、必要なのは次のことだけです。
- これらすべての一般的で不変のインクルードを1つのヘッダーファイル(たとえば、StdAfx.h)に入れます
- この1つのヘッダーファイルのみを含む1つの空のCPPファイル(たとえば、StdAfx.cpp)を用意します
そして今、必要なのは、StdAfx.cppが共通の不変のヘッダーを含む空のソースであることをコンパイラーに伝えることです。
ここで、フラグ/Ycと/Yuが使用されます。
- /Ycフラグを指定してStdAfx.cppファイルをコンパイルします
- /Yuフラグを使用して他のすべてのCPPファイルをコンパイルします
また、コンパイラは(必要に応じて)StdAfx.cppファイルからプリコンパイル済みヘッダーファイルを生成し、このプリコンパイル済みヘッダーファイルを/Yuでマークされた他のすべてのファイルに再利用します。
ノート
新しいプロジェクトを作成すると、古いバージョンのVisual C ++(正しく覚えていれば6と2003)は、デフォルトでプリコンパイル済みヘッダーをアクティブにします。最近のものは、それらをアクティブ化しないという選択肢を提供します。
PCHが有効なプロジェクトの作業バージョンを作成するには、PCHをアクティブにして新しいVC ++プロジェクトを作成し、コンパイルオプションを検討する必要があります。
PCHの詳細については、次のURLにアクセスしてください。