Моя IDE: Visual Studio 2010, я использую надстройку Qt для VS, Qt ver. 4.8.1
Я столкнулся с проблема пытаясь создать предварительно скомпилированный заголовок (pch) в моем проекте Qt.
Мой обычный подход для создания pch в не Qt проекте:
1. Создать заголовок;
2. Включите файлы, которые будут предварительно скомпилированы в заголовке;
3. Для каждого исходного файла в состоянии проекта в его свойствах, если он будет использовать pch;
4. Для одного исходного файла в состоянии проекта создаётся pch;
5. Включите pch во все исходные файлы.
Как эти действия провалились для проекта Qt я решил, что происходит, потому что pch должен быть включен во все файлы, сгенерированные MOC.
Я прочитал статью в QtAssistant о скомпилированных заголовках и сделал следующее:
1. Создан заголовочный файл;
2. Для всех .cpp файлов в проекте установите опцию pch и для одного создания
3. Преобразован в сгенерированный qmake проект
4. Я запустил qmake -project
5. Я изменил сгенерированный файл .pro, вот он:
TEMPLATE = app
TARGET =
DEPENDPATH += . GeneratedFiles
INCLUDEPATH += .
PRECOMPILED_HEADER = StdAfx.h
QT += network
# Input
HEADERS += server.h StdAfx.h
FORMS += server.ui
SOURCES += main.cpp server.cpp StdAfx.h.cpp
RESOURCES += server.qrc
открыть .pro файл и попытаться его построить и получил ошибку:
Ошибка 2 ошибка C1083: Не удается открыть файл включения: ‘StdAfx.h’: Нет такого файла или каталога
Что я делаю не так?
Создайте свой предварительно скомпилированный заголовочный файл и включите нужные заголовки.
pch.hpp:
// precompiled headers
// add C includes here
#ifdef __cplusplus
// add C++ includes here
#include <iostream>
#include <QtGui>
#endif // __cplusplus
Тогда в вашем .pro файле:
CONFIG += precompile_header
PRECOMPILED_HEADER = pch.hpp
HEADERS += pch.hpp
Qmake теперь автоматически установит правильные параметры для компилятора.
Я нашел решение.
Единственное, что нужно сделать, чтобы использовать в проекте предварительно скомпилированный заголовок, это включают
следующие файлы в .pro файле:
CONFIG += nameOfPrecompiledHeader.h
PRECOMPILED_HEADER = nameOfPrecompiledHeader.h
win32-msvc* {
PRECOMPILED_SOURCE = nameOfFileInWhichCreateOptionWillBeSet.cpp /* other .cpp files will be with use option*/
}
после модификации .pro и запуска qmake все файлы .cpp будут настроены для использования pch и один для его создания (nameOfFileInWhichCreateOptionWillBeSet) и будут сгенерированы .pch