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

时间:2012-12-04 19:14:18

标签: c++ visual-studio-2010 qt 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生成的项目
我跑了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':没有这样的文件或目录

  3. 我做错了什么?

2 个答案:

答案 0 :(得分:14)

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

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现在将自动为编译器设置正确的选项。

答案 1 :(得分:3)

我找到了解决方案 要在项目中使用预编译头,唯一需要做的就是 include .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