Теперь я понял, что мне нужен предварительно скомпилированный заголовок для моего проекта. Однако в начале я создал свой проект как пустой проект, в котором нет заголовочного файла stdfx.h. Итак, вот что я сделал:
— Я создал заголовок файла с именем stdfx.h
— В этот файл я включил несколько библиотек.
— Я перешел на страницу свойств проекта -> C / C ++ -> Предварительно скомпилированный заголовок -> установил для параметра PRECOMILED HEADER значение Use (/ Yu).
— Наконец, я включил stdfx.h в каждый файл cpp.
Оно работает. Однако мне интересно, работает ли созданный мной файл stdfx.h как тот, который автоматически создается в Visual Studio? Я имею в виду, действительно ли это предварительно скомпилированный заголовок, который сэкономит время при компиляции, или просто обычный заголовочный файл?
Обычно называется стандfx.h, но это действительно не имеет значения. Вы можете назвать свой предварительно скомпилированный заголовок как хотите.
Вы пропустили один последний шаг.
Вам также необходимо создать stdafx.cpp. Это пустой файл, который имеет только #include "stdafx.h"
линия.
Для этого конкретного файла щелкните его правой кнопкой мыши в обозревателе решений и выберите свойства. Это откроет страницу свойств с настройками специфичные для этого исходного файла (по умолчанию наследует настройки вашего проекта). Для этого конкретного файла выберите /Yc
в качестве опции компилятора вместо / Yu для параметра Precompiled. Если вы этого не сделаете, вы можете не наблюдать улучшения скорости сборки предварительно скомпилированных заголовков.
При сборке Visual Studio сначала будет создан файл stdafx.cpp. И вместе с этим он создаст файл .pch, который подберут другие исходные файлы.
И пока я здесь. Все, что нужно включить в предварительно скомпилированный заголовочный файл, это все системные заголовочные файлы и файлы C / C ++. (например. <windows.h>, <stdio.h>, <string>, <map>
, так далее…). Вы получите наибольшую выгоду, включив все эти файлы — поскольку они никогда не меняются от сборки к сборке.
Вы определенно можете сделать stdfx.h
самостоятельно или другим предварительно скомпилированным заголовочным файлом (имя не очень важно). Но вы должны следовать некоторым правилам, описанным в MSDN.
Вы можете прочитать больше о предварительно скомпилированных заголовках в Документация