プリコンパイル済みヘッダーは、ライブラリのユーザーに決して公開しないでください。それらはライブラリの実装の詳細です。これ以上何もない。PCH は .cpp ファイルに含まれるものです。ヘッダー ファイルからインクルードしないでください。
覚えておいてください: ヘッダー ファイルには、そのヘッダー ファイルがコンパイルするために絶対に必要なものだけを含める必要があります。
あなたの例を見てみましょう。プロジェクト A は DirectX を使用します。したがって、プロジェクト A の .cpp ファイルには、DirectX ヘッダーを含む PCH が含まれています。ここで、プロジェクト A へのインターフェイスが DirectX オブジェクトと型を使用する場合、プロジェクト Aインターフェイスヘッダー (プロジェクト A のユーザーが使用するもの) に DirectX ヘッダーを含める必要があります。
これは、コンパイル時間を改善するために PCH を使用するプロジェクト A の機能には影響しません。DirectX ヘッダーにはインクルード ガードがあるため、複数回インクルードされることはありません。プロジェクト A のインターフェイス ヘッダーにそれらを含めるのに費用はかかりません。
プロジェクト A を使用するプロジェクト B には、独自の PCH ファイルがあります。この PCH には、DirectX とプロジェクト A のヘッダーが含まれます。したがって、プロジェクト A のヘッダーに DirectX を含めても、プロジェクト B のビルド時間には影響しません。
プロジェクトBはプロジェクトAを使用します。しかし、あなたが説明したように、プロジェクトBはプロジェクトBのユーザーをプロジェクトAまたはDirectXに公開しません。つまり、プロジェクト B がプロジェクト A を使用するという事実は、プロジェクト B の実装の詳細であるため、プロジェクト B のユーザーには公開されません。
そのため、プロジェクト B のインターフェイス ヘッダー (プロジェクト B のユーザーが使用するヘッダー) には、プロジェクト A または DirectX からのものは何も含まれていません。したがって、プロジェクト B を使用するこのプロジェクト C には含まれません。