Как использовать предварительно скомпилированные заголовки в проекте Qt

Моя 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
  1. Я запускал qmake
  2. открыть .pro файл и попытаться его построить и получил ошибку:

    Ошибка 2 ошибка C1083: Не удается открыть файл включения: ‘StdAfx.h’: Нет такого файла или каталога

Что я делаю не так?

6

Решение

Создайте свой предварительно скомпилированный заголовочный файл и включите нужные заголовки.

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 теперь автоматически установит правильные параметры для компилятора.

14

Другие решения

Я нашел решение.
Единственное, что нужно сделать, чтобы использовать в проекте предварительно скомпилированный заголовок, это включают
следующие файлы в .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

3

По вопросам рекламы [email protected]