多くのVisualC++プロジェクトを使用したソリューションがあり、すべてPCHを使用していますが、プロジェクト固有のニーズに合わせて特定のコンパイラスイッチをオンにしているものもあります。
これらのプロジェクトのほとんどは、それぞれのstdafx.h(STL、ブーストなど)で同じヘッダーのセットを共有します。プロジェクト間でPCHを共有できるかどうか疑問に思っています。そうすれば、プロジェクトごとにすべてのPCHをコンパイルする代わりに、ソリューション内のほとんどのプロジェクトで使用できる共通のPCHを1つ持つことができます。
PCHの場所をプロジェクト設定で共有場所として指定することは可能であると思われるので、これでうまくいくと思います。また、共有PCHを使用するすべてのプロジェクトのすべてのソースファイルが同じコンパイラ設定である必要があると想定しています。そうでない場合、コンパイラはPCHとコンパイルされるソースファイルの間の不整合について文句を言います。
誰かがこれを試しましたか?それは機能しますか?
関連する質問:そのようなシャードPCHは過度に包括的である必要がありますか、それとも全体的なビルド時間を損なうでしょうか?たとえば、共有PCHには、広く使用されている多くのSTLヘッダーを含めることができますが、一部のプロジェクトでは、とだけが必要な場合が<string>
あり<vector>
ます。共有PCHを使用することで節約された時間は、ビルドプロセスの後の時点で、オプティマイザーがPCHによってプロジェクトにドラッグされた未使用のものをすべて破棄する必要があるときに返済する必要がありますか?