From 286325ceb625b0cc1a40de4f56b73cdc4bcc726e Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Wed, 13 May 2009 18:09:47 +0200 Subject: [PATCH] Add includes to the codemodel specified via PKGCONFIG in .pro files We run pkg-config --cflags-only-I $$PKGCONFIG in the background to find those includes. Task-Nr: 250195 --- src/plugins/qt4projectmanager/qt4nodes.cpp | 1 + src/plugins/qt4projectmanager/qt4nodes.h | 3 ++- src/plugins/qt4projectmanager/qt4project.cpp | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 3693b5abe84..1080bad90a6 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -719,6 +719,7 @@ void Qt4ProFileNode::update() newVarValues[IncludePathVar] = includePaths(reader); newVarValues[UiDirVar] = uiDirPaths(reader); newVarValues[MocDirVar] = mocDirPaths(reader); + newVarValues[PkgConfigVar] = reader->values(QLatin1String("PKGCONFIG")); if (m_varValues != newVarValues) { m_varValues = newVarValues; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 9200ac101bd..f5599e90b61 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -99,7 +99,8 @@ enum Qt4Variable { IncludePathVar, CxxCompilerVar, UiDirVar, - MocDirVar + MocDirVar, + PkgConfigVar }; class Qt4PriFileNode; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 6063992b6ed..a03e12b1fd1 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -527,13 +527,27 @@ void Qt4Project::updateCodeModel() } const QStringList proIncludePaths = pro->variableValue(IncludePathVar); - foreach (QString includePath, proIncludePaths) { + foreach (const QString &includePath, proIncludePaths) { if (!allIncludePaths.contains(includePath)) allIncludePaths.append(includePath); if (!info.includes.contains(includePath)) info.includes.append(includePath); } + { // Pkg Config support + QStringList pkgConfig = pro->variableValue(PkgConfigVar); + if (!pkgConfig.isEmpty()) { + pkgConfig.prepend("--cflags-only-I"); + QProcess process; + process.start("pkg-config", pkgConfig); + process.waitForFinished(); + QString result = process.readAllStandardOutput(); + foreach(const QString &part, result.trimmed().split(' ', QString::SkipEmptyParts)) { + info.includes.append(part.mid(2)); // Chop off "-I" + } + } + } + // Add mkspec directory info.includes.append(qtVersion(activeBuildConfiguration())->mkspecPath()); -- GitLab