Предварительно скомпилированные заголовки должны НИКОГДА не показываться пользователям библиотеки.Они являются деталью реализации библиотеки;ничего более.PCH - это то, что включает в себя файлы .cpp;они никогда не должны включаться в заголовочный файл.
Помните: заголовочный файл должен включать только то, что абсолютно необходимо для заголовочного файла для его компиляции.
Давайте рассмотрим ваш пример.Проект A использует DirectX.Поэтому файлы .cpp в проекте A содержат PCH, который включает заголовки DirectX.Теперь, если интерфейс для Project A использует объекты и типы DirectX, тогда заголовки интерфейса Project A (те, которые используются пользователями Project A) должны будут включать заголовки DirectX.
Это не повлияет на способность проекта A использовать PCH для улучшения времени компиляции.Заголовки DirectX имеют элементы защиты, поэтому они не будут включены несколько раз.Не стоит ничего включать в заголовки интерфейса проекта А.
Проект Б, который использует проект А, будет иметь свои собственные файлы PCH.Этот PCH будет включать в себя заголовки DirectX и Project A.Таким образом, включение DirectX в заголовки проекта A не повлияет на время сборки проекта B.
В проекте B используется проект A. Но, как вы уже описали, проект B не раскрывает пользователей проекта Bв проект A или DirectX.То есть тот факт, что Проект B использует Проект A, является деталью реализации Проекта B, и поэтому он не должен быть представлен пользователям Проекта B.
Как таковые, заголовки интерфейса Проекта B (заголовки, используемыепользователи проекта B) не включают ничего из проекта A или из DirectX.Поэтому этот Проект C, который использует Проект B, не будет включать их.