CMake: Pass scanned files on to builddirreaders

Change-Id: I226aeafe6800a84fe4bbf8cf6fd21b8237575a88
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-11-04 09:31:46 +01:00
parent 737b7c94e8
commit 269e699fd9
6 changed files with 31 additions and 6 deletions

View File

@@ -326,7 +326,28 @@ bool BuildDirManager::persistCMakeState()
void BuildDirManager::generateProjectTree(CMakeProjectNode *root)
{
QTC_ASSERT(m_reader, return);
m_reader->generateProjectTree(root);
QTC_ASSERT(m_futureInterface, return);
const Utils::FileName projectFile = m_buildConfiguration->target()->project()->projectFilePath();
QList<FileNode *> tmp = Utils::filtered(m_futureInterface->future().result(),
[projectFile](const FileNode *fn) -> bool {
const Utils::FileName &path = fn->filePath();
return path != projectFile && !path.toString().startsWith(projectFile.toString() + ".user");
});
Utils::sort(tmp, ProjectExplorer::Node::sortByPath);
m_futureInterface.reset(); // Make sure to flush the stale results
const QList<FileNode *> allFiles = tmp;
m_reader->generateProjectTree(root, allFiles);
QSet<FileNode *> usedNodes;
foreach (FileNode *fn, root->recursiveFileNodes())
usedNodes.insert(fn);
QList<FileNode *> leftOvers = Utils::filtered(allFiles, [&usedNodes](FileNode *fn) {
return !usedNodes.contains(fn);
});
qDeleteAll(leftOvers);
}
QSet<Core::Id> BuildDirManager::updateCodeModel(CppTools::ProjectPartBuilder &ppBuilder)