如何在Qt项目中使用预编译头文件

spi*_*ght 7 c++ qt visual-studio-2010 precompiled-headers

我的IDE:Visual Studio 2010,我使用Qt加载项为VS,Qt ver.4.8.1

在我的Qt项目中尝试创建预编译头(pch)时,我遇到了问题.

我在非Qt项目中创建pch的方法是:
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
Run Code Online (Sandbox Code Playgroud)
  1. 我跑了qmake
  2. 打开.pro文件并尝试构建它并得到错误:

    错误2错误C1083:无法打开包含文件:'StdAfx.h':没有这样的文件或目录

我做错了什么?

Gor*_*man 15

创建预编译的头文件并包含所需的标头.

pch.hpp:

// precompiled headers

// add C includes here

#ifdef __cplusplus
// add C++ includes here

#include <iostream>
#include <QtGui>

#endif // __cplusplus
Run Code Online (Sandbox Code Playgroud)

然后在你的.pro文件中:

CONFIG += precompile_header
PRECOMPILED_HEADER = pch.hpp
HEADERS += pch.hpp
Run Code Online (Sandbox Code Playgroud)

Qmake现在将自动为编译器设置正确的选项.

  • @spin_eight你错了.而不是重复我自己,我只是将你链接到[相关文档](http://qt-project.org/doc/qt-4.8/qmake-precompiledheaders.html),这正是我所展示的. (6认同)
  • @spin_eight您自己的答案给出了将预编译头添加到.pro文件的错误语法.`CONFIG`选项应该是`precompile_header`而不是头文件本身的名称."PRECOMPILED_SOURCE"选项也没有在任何地方记录.就文档而言,我的答案是正确的(对我来说它总是很好). (5认同)

spi*_*ght 2

我找到了解决方案。
为了在项目中使用预编译头,唯一需要做的就是在 .pro 文件中包含以下语句:

CONFIG += nameOfPrecompiledHeader.h
PRECOMPILED_HEADER = nameOfPrecompiledHeader.h
win32-msvc* {
PRECOMPILED_SOURCE = nameOfFileInWhichCreateOptionWillBeSet.cpp /* other .cpp files will be with use option*/
}
Run Code Online (Sandbox Code Playgroud)

修改 .pro 并运行 qmake 后,将设置所有 .cpp 文件以供 pch 使用,并创建一个用于 pch 的创建 (nameOfFileInWhichCreateOptionWillBeSet) 并生成 .pch