From eff07681009e9e971966e02fb5418b96f7455cc3 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 15 Nov 2016 17:26:08 +0100 Subject: [PATCH] CMake: Fix server-mode trimming out targets every second time Do not trim out targets every second time the project tree is generated. Change-Id: I6ed9cd7bb6b2e88ec6dbe063f90719ffacffdd61 Reviewed-by: Tobias Hunger --- .../cmakeprojectmanager/servermodereader.cpp | 21 +++++++------------ .../cmakeprojectmanager/servermodereader.h | 10 ++++----- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 3fbf31ba26b..d0e8aeba062 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -672,12 +672,11 @@ QSet ServerModeReader::updateTargets(CMakeListsNode *root, { QSet usedNodes; for (const Target *t : targets) { - CMakeTargetNode *tNode = findOrCreateTargetNode(root, t->sourceDirectory, t->name); tNode->setTargetInformation(t->artifacts, t->type); + usedNodes.insert(tNode); // always keep the target node: FileGroups use buildTree! - usedNodes.unite(updateFileGroups(tNode, t->sourceDirectory, t->buildDirectory, - t->fileGroups, headers)); + updateFileGroups(tNode, t->sourceDirectory, t->buildDirectory, t->fileGroups, headers); } return usedNodes; } @@ -695,13 +694,12 @@ static Utils::FileName mapFileName(const Utils::FileName &fn, const Utils::FileN return fn; } -QSet ServerModeReader::updateFileGroups(ProjectNode *targetRoot, - const Utils::FileName &sourceDirectory, - const Utils::FileName &buildDirectory, - const QList &fileGroups, - const QHash > &headers) +void ServerModeReader::updateFileGroups(ProjectNode *targetRoot, + const Utils::FileName &sourceDirectory, + const Utils::FileName &buildDirectory, + const QList &fileGroups, + const QHash > &headers) { - QSet usedNodes; QList toList; QSet alreadyListed; for (const FileGroup *f : fileGroups) { @@ -733,11 +731,6 @@ QSet ServerModeReader::updateFileGroups(ProjectNode *targetRoot, } targetRoot->buildTree(toList, sourceDirectory); - - foreach (FileNode *fn, toList) - usedNodes.insert(static_cast(fn)); // Mark all leaves as keeper! - - return usedNodes; } } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index d49d3c48dc0..329db12189e 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -127,11 +127,11 @@ private: QSet updateTargets(CMakeListsNode *root, const QList &targets, const QHash> &headers); - QSet updateFileGroups(ProjectExplorer::ProjectNode *targetRoot, - const Utils::FileName &sourceDirectory, - const Utils::FileName &buildDirectory, - const QList &fileGroups, - const QHash> &headers); + void updateFileGroups(ProjectExplorer::ProjectNode *targetRoot, + const Utils::FileName &sourceDirectory, + const Utils::FileName &buildDirectory, + const QList &fileGroups, + const QHash> &headers); bool m_hasData = false;