C++ 如何在Qt项目中使用预编译头
我的IDE:VisualStudio2010,我为VS、Qt版本使用Qt插件。4.8.1 在我的Qt项目中尝试创建预编译头(pch)时,我遇到了问题 我在非Qt项目中创建pch的常用方法是:C++ 如何在Qt项目中使用预编译头,c++,visual-studio-2010,qt,precompiled-headers,C++,Visual Studio 2010,Qt,Precompiled Headers,我的IDE:VisualStudio2010,我为VS、Qt版本使用Qt插件。4.8.1 在我的Qt项目中尝试创建预编译头(pch)时,我遇到了问题 我在非Qt项目中创建pch的常用方法是: 创建标题 包括将在头文件中预编译的文件 对于项目状态下的每个源文件,如果它将使用pch,则在其属性中 用于pch项目状态创建中的一个源文件 在所有源文件中包括pch 由于这些操作失败对于Qt项目,我决定将由于pch而发生的情况包括在MOC生成的所有文件中 我阅读了QtAssistant中关于预编译头的文章,
要在项目中使用预编译头,唯一需要做的事情是包含 .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使用,并创建一个用于pch的文件(NameOffleInWhichCreateOption将被设置),同时将生成.pch,创建预编译的头文件并包含所需的头文件 pch.hpp:
// precompiled headers
// add C includes here
#ifdef __cplusplus
// add C++ includes here
#include <iostream>
#include <QtGui>
#endif // __cplusplus
Qmake现在将自动为编译器设置正确的选项。您是否创建了StdAfx.h文件并在其中包含所有要预编译的头文件?当然可以!我已经提到我创建了.h文件,但没有说明它是StdAfx.hd。您的答案是否包含我的问题或答案中未包含的任何新信息?你回答的目的是什么?你在和谁说话?@spin_八你自己的答案给出了错误的语法,用于将预编译头添加到.pro文件中。
CONFIG
选项应该是precompile\u header
而不是头文件本身的名称。另外,PRECOMPILED\u SOURCE
选项在任何地方都没有文档记录。我的答案在医生看来是正确的(而且对我来说总是很好)。@spin_八你错了。我不会重复我的话,我只会将你链接到我所展示的内容。CONFIG+=precompile\u header使它在Qt5.5.0(OSX)上工作。注意:PRECOMPILED\u SOURCE
本质上是PRECOMPILED\u header
的未记录构建工件。如果要从多个项目中使用相同的PRECOMPILED_头
,并且它们可能并行生成,则必须使用PRECOMPILED_源
(具有不同的值)。否则,每个生成将重写header.h.cpp文件,其他生成可能会在其处于不确定状态时尝试处理它。这需要被视为每个目标临时文件,但默认情况下qmake不会以这种方式处理它。我想在这里添加一个警告,提醒您遵循此建议。我认为关键的一点是,QMake将自动为您为Visual Studio生成预编译的源文件,因此您不必像使用vanilla VS那样自己创建一个源文件。这在Qt5.5.0(OSX)上不起作用。使用CONFIG+=precompile_头作为@Gordon Freeman所指示的名称可以使其工作。@Borzh请比较回答日期和Qt 5可用的日期。我的答案是关于Qt4.8,我只是指出您的解决方案不适用于当前版本的Qt,所以其他用户不会花时间尝试。
CONFIG += precompile_header
PRECOMPILED_HEADER = pch.hpp
HEADERS += pch.hpp