PCH-файлы в процессе построения
Обновлен: Ноябрь 2007
База кода проекта программного обеспечения обычно содержится в нескольких исходных файлах C или C++, объектных файлах и файлах заголовков. Обычно файл makefile преобразует комбинацию этих элементов в исполняемый файл. На следующем рисунке показана структура файла makefile, в которой используется предварительно скомпилированный файл заголовка. Используются такие же имена макроса NMAKE и имена файлов, как в примере кода в разделах Образец файла makefile для PCH и Пример кода для PCH.
На рисунке используется три схематичных устройства, чтобы показать поток процесса построения. Именованные прямоугольники представляют файл или макрос. Три макроса представляют один или несколько файлов. Темные области представляют действие компиляции или компоновки. Стрелки показывают, какие файлы и макросы объединяются во время процесса компиляции или компоновки.
Структура файла makefile, использующего предварительно скомпилированный файл заголовка (PCH)
В верхней части рисунка STABLEHDRS и BOUNDRY являются макросами NMAKE, в которых перечисляются файлы, которые не следует перекомпилировать. Эти файлы компилируются с помощью командной строки
CL /c /W3 /Yc$(BOUNDRY) applib.cpp myapp.cpp
только если предварительно скомпилированный файл заголовка (STABLE.pch) не существует или файлы, перечисленные в двух указанных выше макросах, изменены. В обоих случаях предварительно скомпилированный содержит код только из файлов, перечисленных в макросе STABLEHDRS. Укажите последний файл, который необходимо предварительно скомпилировать в макросе BOUNDRY.
Перечисленные в этих макросах файлы могут быть файлами заголовков или исходными файлами C или C++. (Нельзя использовать один PCH-файл с модулями C и C++ одновременно). Обратите внимание, что можно использовать макрос hdrstop, чтобы остановить предварительную компиляцию в определенной точке в файле BOUNDRY. Дополнительные сведения см. в разделе hdrstop.
Далее на рисунке файл APPLIB.obj представляет код поддержки, используемый в конечном приложении. Он создается из файла APPLIB.cpp, файлов, перечисленных в макросе UNSTABLEHDRS и предварительно скомпилированного кода из PCH-файла.
MYAPP.obj представляет конечное приложение. Он создается из файла MYAPP.cpp, файлов, перечисленных в макросе UNSTABLEHDRS и предварительно скомпилированного кода из PCH-файла.
И, наконец, исполняемый файл (MYAPP.EXE) создается при компоновке файлов, перечисленных в макросе OBJS (APPLIB.obj и MYAPP.obj).
Дальнейшее описание рисунка см. в следующих разделах.