いくつかのプロジェクトで使用されているフレームワークがあります (フレームワークがどのように機能するかを示すいくつかのサンプルが含まれています)。フレームワークには、コア、グラフィック、物理、GUI などのコンポーネントがあります。それぞれが個別のライブラリです。構成もいくつかあります。
メイン ソリューション ファイルは、プロジェクトがライブラリを使用できるように、可能なすべての構成で完全なプロジェクトをコンパイルします。フレームワークは、特にフレームワークを利用するプロジェクトに取り組んでいる誰か (私を含む) によって再コンパイルされることはめったにないため、多くのヘッダーをプリコンパイルすることは理にかなっています。
最初は、各プロジェクト/サンプルに、プロジェクト全体で使用される独自のプリコンパイル済みヘッダーを用意しました。毎回同じ pch (たとえば、デバッグ) を再構築する必要があるため、共有 PCH によって冗長な PCH コンパイルが削減されると判断しました。ここまでは順調ですね。ライブラリと一緒に PCH をコンパイルするプロジェクトがあります。以降のすべてのプロジェクト/サンプルは現在、同じ PCH を使用しています。これは素晴らしく機能しました。
唯一の問題は、ファイル サイズが大きくなったことです。フレームワークを使用するプロジェクトがリリースされることを意図しているかのように、これは障害ではありません。共有 PCH から切り離され、独自のプロジェクトが作成される可能性があります。私は迅速な開発のためにこれを行いました (ビルドの準備ができている新しいプロジェクト/サンプルの VS プロジェクト ファイルとソース ファイルを作成し、古いプロジェクトを使用していた以前のプロジェクトのアップグレードを容易にするツールを実際に作成しました)。フレームワークのバージョン)。
とにかく、ファイル サイズの増加は、共有 PCH を作成している独立した VS プロジェクト ファイルに、すべてのライブラリのすべてのヘッダーが含まれているためです。私の質問は、条件付きコンパイル (#ifndef) を使用して最終的な実行可能ファイルのサイズを縮小できるかどうかです。または、複数の PCH ファイルを何らかの方法で共有することもできます (私の知る限り、それは不可能ですが、間違っている可能性があります)。私の PCH ファイルに関する知識は非常に限られているため、意味が分からない場合は、そう言ってください (優しい言葉で:))。 .
ありがとう!
注: 繰り返して明確にするために、これまでのところ、共有 PCH を含むすべてのライブラリをコンパイルする 1 つのソリューション ファイルがあります。すべてのサンプルとプロジェクトを再コンパイルすると、せいぜい数秒かそれ以上でコンパイルされます。以前は、各プロジェクトで PCH ファイルが再作成されていました。また、最初はライブラリごとに PCH が必要でしたが、ソース ファイルで複数の PCH ファイルを使用できないことがわかったため、このオプションは実行できませんでした。もう 1 つのオプションは、PCH ファイルのすべての可能な組み合わせをコンパイルすることですが、これは時間がかかり、面倒で、エラーが発生しやすくなります。