我的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
打开.pro文件并尝试构建它并收到错误:
错误2错误C1083:无法打开包含文件:'StdAfx.h':没有这样的文件或目录
我做错了什么?
答案 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