У меня есть фреймворк, который используется несколькими проектами (который включает несколько примеров, чтобы показать, как работает фреймворк). Фреймворк имеет такие компоненты, как ядро, графика, физика, графический интерфейс и т. Д. Каждый из них представляет собой отдельную библиотеку. Также есть несколько конфигураций.
Основной файл решения компилирует полный проект со всеми возможными конфигурациями, чтобы проекты могли использовать библиотеки. Поскольку фреймворк редко перекомпилируется, особенно кем-то (включая меня), работающим над проектом, использующим фреймворк, имеет смысл предварительно скомпилировать множество заголовков.
Изначально у каждого проекта / образца был свой предварительно скомпилированный заголовок, используемый для всего проекта. Каждый раз, когда мне приходилось перестраивать один и тот же pch (например, Debug), я решил, что общий PCH уменьшит избыточную компиляцию PCH. Все идет нормально. У меня есть проект, который компилирует PCH вместе с библиотеками. Все последующие проекты / образцы теперь используют один и тот же PCH. Это сработало чудесно.
Единственная проблема в том, что я видел увеличение размера файла. Это не препятствие, так как если проект, использующий инфраструктуру, предназначен для выпуска, он может отделить себя от общего PCH и создать свой собственный. Я сделал это ради быстрой разработки (я фактически создал инструмент, который создает файлы проекта VS и исходные файлы для нового проекта / образца, готового к сборке, а также облегчает обновление предыдущего проекта, в котором использовался более старый версия фреймворка).
В любом случае (я предполагаю, что) увеличение размера файла связано с тем, что независимый файл проекта VS, который создает общий PCH, включает в себя все заголовки из всех библиотек. Мой вопрос: могу ли я использовать условную компиляцию (#ifndef), чтобы уменьшить размер конечного исполняемого файла? Или, может быть, как-то обмениваться несколькими файлами PCH (насколько я знаю, это невозможно, но я, возможно, ошибаюсь). Если у меня нет смысла, пожалуйста, скажите так (в виде слов :)), поскольку мои знания о файлах PCH очень ограничены .
Спасибо!
Примечание. Чтобы повторить и прояснить ситуацию, у меня пока есть один файл решения, который компилирует все библиотеки, включая общий PCH. Теперь, если я перекомпилирую все сэмплы и проекты, они компилируются не более чем за пару секунд или больше. Раньше каждый проект воссоздали файл PCH. Кроме того, изначально я хотел PCH для каждой библиотеки, но потом я обнаружил, что исходный файл не может использовать несколько файлов PCH, поэтому эта опция была неосуществима. Другой вариант - скомпилировать все возможные комбинации файлов PCH, но это слишком трудоемко, громоздко и подвержено ошибкам.