7

我的 IDE:Visual Studio 2010,我使用 VS 的 Qt 插件,Qt 版本。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 文件,这里是:

    模板 = 应用目标 = DEPENDPATH += 。GeneratedFiles INCLUDEPATH += 。PRECOMPILED_HEADER = StdAfx.h QT += 网络

    输入

    HEADERS += server.h StdAfx.h Forms += server.ui SOURCES += main.cpp server.cpp StdAfx.h.cpp RESOURCES += server.qrc

  6. 我跑了 qmake

  7. 打开 .pro 文件并尝试构建它并得到错误:

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

我做错了什么?

4

2 回答 2

16

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

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

于 2012-12-06T07:01:44.040 回答
2

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

于 2012-12-04T20:43:12.467 回答