From 802eff34850a4d0e648d87069ad5d4790c08ee86 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 27 Feb 2017 14:46:45 +0100 Subject: [PATCH] CppTools: Add target information to ProjectPart This is important to be able to map sources to actual things that are going to be built. Change-Id: I1aef940767d60192642ed79a1703cff8dfdad9e1 Reviewed-by: Tim Jenssen Reviewed-by: Christian Stenger --- src/plugins/cmakeprojectmanager/servermodereader.cpp | 1 + src/plugins/cmakeprojectmanager/tealeafreader.cpp | 1 + src/plugins/cppeditor/cppcodemodelinspectordialog.cpp | 4 ++++ src/plugins/cpptools/cppprojectinfogenerator.cpp | 1 + src/plugins/cpptools/cpprawprojectpart.cpp | 5 +++++ src/plugins/cpptools/cpprawprojectpart.h | 2 ++ src/plugins/cpptools/projectpart.h | 1 + src/plugins/qbsprojectmanager/qbsproject.cpp | 1 + src/plugins/qmakeprojectmanager/qmakeproject.cpp | 1 + 9 files changed, 17 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 6bb09612f1d..b62060b1032 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -306,6 +306,7 @@ void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps) CppTools::RawProjectPart rpp; rpp.setProjectFileLocation(fg->target->sourceDirectory.toString() + "/CMakeLists.txt"); + rpp.setBuildSystemTarget(fg->target->name); rpp.setDisplayName(fg->target->name + QString::number(counter)); rpp.setDefines(defineArg.toUtf8()); rpp.setIncludePaths(includes); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index da7d07c00fb..b41176d1ed1 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -358,6 +358,7 @@ void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps) includePaths += m_parameters.buildDirectory.toString(); CppTools::RawProjectPart rpp; rpp.setProjectFileLocation(QString()); // No project file information available! + rpp.setBuildSystemTarget(cbt.title); rpp.setIncludePaths(includePaths); CppTools::RawProjectPartFlags cProjectFlags; diff --git a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp index 7f3f624d183..04a1326f206 100644 --- a/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp +++ b/src/plugins/cppeditor/cppcodemodelinspectordialog.cpp @@ -1779,12 +1779,16 @@ void CppCodeModelInspectorDialog::updateProjectPartData(const ProjectPart::Ptr & } const QString callGroupId = part->callGroupId.isEmpty() ? QString::fromLatin1("") : part->callGroupId; + const QString buildSystemTarget + = part->buildSystemTarget.isEmpty() ? QString::fromLatin1("") + : part->buildSystemTarget; KeyValueModel::Table table = KeyValueModel::Table() << qMakePair(QString::fromLatin1("Project Part Name"), part->displayName) << qMakePair(QString::fromLatin1("Project Part File"), part->projectFileLocation()) << qMakePair(QString::fromLatin1("Project Name"), projectName) << qMakePair(QString::fromLatin1("Project File"), projectFilePath) + << qMakePair(QString::fromLatin1("Buildsystem Target"), buildSystemTarget) << qMakePair(QString::fromLatin1("Callgroup Id"), callGroupId) << qMakePair(QString::fromLatin1("Selected For Building"), CMI::Utils::toString(part->selectedForBuilding)) diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp index 525cdbf284a..422dad8cfdf 100644 --- a/src/plugins/cpptools/cppprojectinfogenerator.cpp +++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp @@ -185,6 +185,7 @@ static ProjectPart::Ptr projectPartFromRawProjectPart(const RawProjectPart &rawP part->projectFileLine = rawProjectPart.projectFileLine; part->projectFileColumn = rawProjectPart.projectFileColumn; part->callGroupId = rawProjectPart.callGroupId; + part->buildSystemTarget = rawProjectPart.buildSystemTarget; part->qtVersion = rawProjectPart.qtVersion; part->projectDefines = rawProjectPart.projectDefines; part->headerPaths = rawProjectPart.headerPaths; diff --git a/src/plugins/cpptools/cpprawprojectpart.cpp b/src/plugins/cpptools/cpprawprojectpart.cpp index 6cd5a213157..3668f8caec0 100644 --- a/src/plugins/cpptools/cpprawprojectpart.cpp +++ b/src/plugins/cpptools/cpprawprojectpart.cpp @@ -66,6 +66,11 @@ void RawProjectPart::setConfigFileName(const QString &configFileName) this->projectConfigFile = configFileName; } +void RawProjectPart::setBuildSystemTarget(const QString &target) +{ + buildSystemTarget = target; +} + void RawProjectPart::setCallGroupId(const QString &id) { callGroupId = id; diff --git a/src/plugins/cpptools/cpprawprojectpart.h b/src/plugins/cpptools/cpprawprojectpart.h index c3708f3a3cf..18f0591ec26 100644 --- a/src/plugins/cpptools/cpprawprojectpart.h +++ b/src/plugins/cpptools/cpprawprojectpart.h @@ -63,6 +63,7 @@ public: void setProjectFileLocation(const QString &projectFile, int line = -1, int column = -1); void setConfigFileName(const QString &configFileName); void setCallGroupId(const QString &id); + void setBuildSystemTarget(const QString &target); void setQtVersion(ProjectPart::QtVersion qtVersion); @@ -84,6 +85,7 @@ public: int projectFileColumn = -1; QString projectConfigFile; // currently only used by the Generic Project Manager QString callGroupId; + QString buildSystemTarget; QStringList precompiledHeaders; ProjectPartHeaderPaths headerPaths; QByteArray projectDefines; diff --git a/src/plugins/cpptools/projectpart.h b/src/plugins/cpptools/projectpart.h index 98fc5367adc..fa13aed3444 100644 --- a/src/plugins/cpptools/projectpart.h +++ b/src/plugins/cpptools/projectpart.h @@ -110,6 +110,7 @@ public: int projectFileColumn = -1; QString projectConfigFile; // currently only used by the Generic Project Manager QString callGroupId; + QString buildSystemTarget; ProjectFiles files; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 182537bfaaf..ec047b86390 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -996,6 +996,7 @@ void QbsProject::updateCppCodeModel() rpp.setDisplayName(grp.name()); rpp.setProjectFileLocation(grp.location().filePath(), grp.location().line(), grp.location().column()); + rpp.setBuildSystemTarget(uniqueProductName(prd)); QHash filePathToSourceArtifact; bool hasCFiles = false; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index a5e9cee2b9c..ffdcee6f2ad 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -345,6 +345,7 @@ void QmakeProject::updateCppCodeModel() CppTools::RawProjectPart rpp; rpp.setDisplayName(pro->displayName()); rpp.setProjectFileLocation(pro->filePath().toString()); + rpp.setBuildSystemTarget(pro->targetInformation().target); // TODO: Handle QMAKE_CFLAGS rpp.setFlagsForCxx({cxxToolChain, pro->variableValue(Variable::CppFlags)}); rpp.setDefines(pro->cxxDefines());