Проблема
Допустим, у вас есть список используемых вами заголовков, который, как вы знаете, не изменится.Например, заголовки C, или заголовки C ++, или заголовки Boost и т. Д.
Чтение их для каждой компиляции файла CPP требует времени, и это не продуктивное время, так как компилятор читает те же заголовки,снова и снова, и снова и снова выводить один и тот же результат компиляции для тех же заголовков.
Должен быть какой-то способ сообщить компилятору, что эти заголовки всегда одинаковы, и кэшировать их скомпилированный результат, а не перекомпилировать ихснова и снова, нет?
Решение
Предварительно скомпилированные заголовки учитывают это, поэтому все, что вам нужно, это:
- Поместить все эти общиеи неизменное включает в себя один файл заголовка (скажем, StdAfx.h)
- Иметь один пустой файл CPP (скажем, StdAfx.cpp), включая только этот один файл заголовка
И теперь,вам нужно сообщить компилятору, что StdAfx.cpp - это пустой источник, содержащий общие и неизменные заголовки.
Здесь используются флаги / Yc и / Yu:
- Скомпилируйте файл StdAfx.cpp с флагом / Yc
- Скомпилируйте все остальные файлы CPP с флагом / Yu * 1026 *
И сгенерирует компилятор (когданеобходимо) предварительно скомпилированный файл заголовка из файла StdAfx.cpp, а затем повторно использовать этот предварительно скомпилированный файл заголовка для всех других файлов, отмеченных /Yu.
Примечание
При созданииновый проект, старые версии Visual C ++ (6 и 2003, если я правильно помню) активируют предварительно скомпилированные заголовки по умолчанию.Последние предлагают выбор их не.
Вы должны создать новый проект VC ++ с активированным PCH, чтобы иметь рабочую версию проекта с поддержкой PCH, и изучить параметры компиляции.
Для получения дополнительной информации о PCH, вы можете посетить следующий URL: