diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index a6281fd7151..71fccc5df8c 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -277,10 +277,6 @@ void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QListtarget()->project()->projectFilePath(); m_reader->generateProjectTree(root, allFiles); - - // Make sure the top level CMakeLists.txt is always visible: - if (root->isEmpty()) - root->addNode(new FileNode(projectFile, FileType::Project, false)); } void BuildDirManager::updateCodeModel(CppTools::RawProjectParts &rpps) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 8bba67e359c..b4113c53fdc 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -221,6 +221,10 @@ CMakeBuildConfiguration::generateProjectTree(const QList &allFi auto root = new CMakeProjectNode(target()->project()->projectDirectory()); m_buildDirManager->generateProjectTree(root, allFiles); + if (root->isEmpty()) { + delete root; + return nullptr; + } return root; } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 9ae83d71ad6..91aa189e64c 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -147,8 +147,8 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) auto newRoot = bc->generateProjectTree(m_allFiles); if (newRoot) { - setRootProjectNode(newRoot); setDisplayName(newRoot->displayName()); + setRootProjectNode(newRoot); } updateApplicationAndDeploymentTargets(); diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 0a3ef883805..e366d4f6ecc 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -741,6 +741,9 @@ void ServerModeReader::addFileGroups(ProjectNode *targetRoot, void ServerModeReader::addHeaderNodes(ProjectNode *root, const QList knownHeaders, const QList &allFiles) { + if (root->isEmpty()) + return; + auto headerNode = new VirtualFolderNode(root->filePath(), Node::DefaultPriority - 5); headerNode->setDisplayName(tr("")); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index c05b0bf9c11..e7ecd026dd4 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -270,6 +270,9 @@ CMakeConfig TeaLeafReader::takeParsedConfiguration() void TeaLeafReader::generateProjectTree(CMakeProjectNode *root, const QList &allFiles) { + if (m_files.isEmpty()) + return; + root->setDisplayName(m_projectName); // Delete no longer necessary file watcher based on m_cmakeFiles: