From 60c8686ed8fe0d02ad57d82ef27f00fd62ddc49b Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Tue, 12 Jan 2010 13:13:22 +0100 Subject: [PATCH] Add the precompiled headers to the project info QMake passes those headers directly to gcc, so the user doesn't need to include themselves. --- src/plugins/cpptools/cppmodelmanagerinterface.h | 1 + src/plugins/qt4projectmanager/qt4nodes.cpp | 5 +++++ src/plugins/qt4projectmanager/qt4nodes.h | 3 ++- src/plugins/qt4projectmanager/qt4project.cpp | 17 +++++++++++++---- src/plugins/qt4projectmanager/qt4project.h | 1 + 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index 9b9e3dd3cd5..18b991e9419 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -76,6 +76,7 @@ public: QStringList sourceFiles; QStringList includePaths; QStringList frameworkPaths; + QStringList precompiledHeaders; }; class WorkingCopy diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 987e1ec58d0..c613b57ce30 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -938,6 +938,11 @@ void Qt4ProFileNode::update() newVarValues[UiDirVar] = uiDirPaths(reader); newVarValues[MocDirVar] = mocDirPaths(reader); newVarValues[PkgConfigVar] = reader->values(QLatin1String("PKGCONFIG")); + newVarValues[PrecompiledHeaderVar] = + reader->absoluteFileValues(QLatin1String("PRECOMPILED_HEADER"), + m_projectDir, + QStringList() << m_projectDir, + 0); if (m_varValues != newVarValues) { m_varValues = newVarValues; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 7eb52496626..5c6a73f76b8 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -97,7 +97,8 @@ enum Qt4Variable { IncludePathVar, UiDirVar, MocDirVar, - PkgConfigVar + PkgConfigVar, + PrecompiledHeaderVar }; class Qt4PriFileNode; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 7b929299c59..f22d63e6760 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -507,6 +507,7 @@ void Qt4Project::updateCodeModel() QByteArray definedMacros = predefinedMacros; QStringList allIncludePaths = predefinedIncludePaths; QStringList allFrameworkPaths = predefinedFrameworkPaths; + QStringList allPrecompileHeaders; #ifdef Q_OS_MAC const QString newQtLibsPath = versionInfo.value(QLatin1String("QT_INSTALL_LIBS")); @@ -529,6 +530,10 @@ void Qt4Project::updateCodeModel() info.includes = predefinedIncludePaths; info.frameworkPaths = predefinedFrameworkPaths; + info.precompiledHeader = pro->variableValue(PrecompiledHeaderVar); + + allPrecompileHeaders.append(info.precompiledHeader); + // Add custom defines foreach (const QString def, pro->variableValue(DefinesVar)) { definedMacros += "#define "; @@ -623,10 +628,13 @@ void Qt4Project::updateCodeModel() CppTools::CppModelManagerInterface::ProjectInfo pinfo = modelmanager->projectInfo(this); - if (pinfo.defines == predefinedMacros && - pinfo.includePaths == allIncludePaths && - pinfo.frameworkPaths == allFrameworkPaths && - pinfo.sourceFiles == files) { + //qDebug()<<"Using precompiled header"<<allPrecompileHeaders; + + if (pinfo.defines == predefinedMacros + && pinfo.includePaths == allIncludePaths + && pinfo.frameworkPaths == allFrameworkPaths + && pinfo.sourceFiles == files + && pinfo.precompiledHeaders == allPrecompileHeaders) { // Nothing to update... } else { if (pinfo.defines != predefinedMacros || @@ -641,6 +649,7 @@ void Qt4Project::updateCodeModel() pinfo.includePaths = allIncludePaths; pinfo.frameworkPaths = allFrameworkPaths; pinfo.sourceFiles = files; + pinfo.precompiledHeaders = allPrecompileHeaders; modelmanager->updateProjectInfo(pinfo); modelmanager->updateSourceFiles(pinfo.sourceFiles); diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 25883457223..9be7d5dd29a 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -82,6 +82,7 @@ namespace Internal { QByteArray defines; QStringList includes; QStringList frameworkPaths; + QStringList precompiledHeader; }; } -- GitLab