Два варианта предварительной компиляции кода
Обновлен: Ноябрь 2007
На Visual C++ можно предварительно скомпилировать код C и C++. Пользователи не ограничиваются компиляцией только файлов заголовков.
Для выполнения предварительной компиляции необходимо выполнить планирование. Однако можно намного быстрее выполнять компиляции, если использовать предкомпилированный исходный код, а не только файлы заголовков.
Предварительную компиляцию кода следует выполнять, если известно, что в исходных файлах используются общие наборы файлов заголовков, но они включены в разном порядке, или если необходимо включить исходные файлы в предварительную компиляцию.
К параметрам предварительной компиляции заголовков относятся /Yc (создать предварительно скомпилированный заголовочный файл) и /Yu (использование файла предкомпилированного заголовка). Следует использовать /Yc для создания предкомпилированного заголовка. При использовании необязательной прагмы hdrstop параметр /Yc позволяет выполнять предварительную компиляцию как файлов заголовков, так и исходного когда. Следует выбирать параметр /Yu, если необходимо использовать существующий предкомпилированный заголовок в существующей компиляции. Также можно использовать /Fp с параметрами /Yc и /Yu, чтобы задать альтернативное имя для предкомпилированного заголовка.
В разделах со справочной информацией по параметрам /Yu и /Yc рассматривается возможность использования их возможностей в среде разработки.
Построение файла PCH
Построение файла PCH можно выполнить очень просто с помощью другого файла PCH.
cl -c -Yc"stuff.h" -Fplevel1.pch level1.cpp
cl -c -Yu"stuff.h" -Fplevel1.pch -Yc level2.cpp
Файл level2.cpp выглядит следующим образом:
#include "stuff.h"
#include "morestuff.h"
#pragma hdrstop("level2.pch")
Следующая команда выполняет построение файла level2.pch, который можно использовать для последующих компиляций.
cl -c -Yu"morestuff.h" -Fplevel2.pch mysource.cpp
Обратите внимание, что директиву #pragma hdrstop следует поместить только в файл, который выполняет построение второго файла PCH. Нет необходимости помещать его во все файлы CPP, использующие файл PCH. Файлы, использующие файл PCH, могут именовать файл morestuff.h в командной строке (поэтому нет необходимости исправлять все файлы, чтобы его использовать данный файл). Любой из методов предварительной компиляции кода (автоматически или вручную) хранит результирующий предкомпилированный код в предкомпилированном заголовке.
Дополнительные сведения
Дополнительные примеры использования предкомпилированных заголовков см. в файлах Makefile, использованных для построения образцов программ, которые поставляются вместе с библиотекой Microsoft Foundation Class.