summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2016-11-15 17:26:08 +0100
committerTobias Hunger <tobias.hunger@qt.io>2016-11-15 16:27:21 +0000
commiteff07681009e9e971966e02fb5418b96f7455cc3 (patch)
tree960e08d9597641e9fa1dc58f1d038e7be0b1a53a
parent7b467cbad6969fc0532014eaef6f2fbbf25bdf24 (diff)
downloadqt-creator-eff07681009e9e971966e02fb5418b96f7455cc3.tar.gz
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 <tobias.hunger@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/servermodereader.cpp21
-rw-r--r--src/plugins/cmakeprojectmanager/servermodereader.h10
2 files changed, 12 insertions, 19 deletions
diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp
index 3fbf31ba26..d0e8aeba06 100644
--- a/src/plugins/cmakeprojectmanager/servermodereader.cpp
+++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp
@@ -672,12 +672,11 @@ QSet<Node *> ServerModeReader::updateTargets(CMakeListsNode *root,
{
QSet<Node *> 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<Node *> ServerModeReader::updateFileGroups(ProjectNode *targetRoot,
- const Utils::FileName &sourceDirectory,
- const Utils::FileName &buildDirectory,
- const QList<ServerModeReader::FileGroup *> &fileGroups,
- const QHash<FileName, QList<FileNode *> > &headers)
+void ServerModeReader::updateFileGroups(ProjectNode *targetRoot,
+ const Utils::FileName &sourceDirectory,
+ const Utils::FileName &buildDirectory,
+ const QList<ServerModeReader::FileGroup *> &fileGroups,
+ const QHash<FileName, QList<FileNode *> > &headers)
{
- QSet<Node *> usedNodes;
QList<FileNode *> toList;
QSet<Utils::FileName> alreadyListed;
for (const FileGroup *f : fileGroups) {
@@ -733,11 +731,6 @@ QSet<Node *> ServerModeReader::updateFileGroups(ProjectNode *targetRoot,
}
targetRoot->buildTree(toList, sourceDirectory);
-
- foreach (FileNode *fn, toList)
- usedNodes.insert(static_cast<Node *>(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 d49d3c48dc..329db12189 100644
--- a/src/plugins/cmakeprojectmanager/servermodereader.h
+++ b/src/plugins/cmakeprojectmanager/servermodereader.h
@@ -127,11 +127,11 @@ private:
QSet<ProjectExplorer::Node *> updateTargets(CMakeListsNode *root,
const QList<Target *> &targets,
const QHash<Utils::FileName, QList<ProjectExplorer::FileNode *>> &headers);
- QSet<ProjectExplorer::Node *> updateFileGroups(ProjectExplorer::ProjectNode *targetRoot,
- const Utils::FileName &sourceDirectory,
- const Utils::FileName &buildDirectory,
- const QList<FileGroup *> &fileGroups,
- const QHash<Utils::FileName, QList<ProjectExplorer::FileNode *>> &headers);
+ void updateFileGroups(ProjectExplorer::ProjectNode *targetRoot,
+ const Utils::FileName &sourceDirectory,
+ const Utils::FileName &buildDirectory,
+ const QList<FileGroup *> &fileGroups,
+ const QHash<Utils::FileName, QList<ProjectExplorer::FileNode *>> &headers);
bool m_hasData = false;