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