summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-06-20 17:44:39 +0200
committerFlorian Apolloner <florian@apolloner.eu>2017-06-23 09:56:07 +0000
commit64c5f960e82f6efb947907041ab6e40860ea4652 (patch)
treeccd3d53146b3ac8bd3338909e238a9ccec9e33c9
parent7062fd5138054a7eace18322ac5ae9f086cd1dc3 (diff)
downloadqt-creator-64c5f960e82f6efb947907041ab6e40860ea4652.tar.gz
CMake: Return an empty project tree if parsing failed
This triggers the logic in Project to show the top level project file in the project tree. Remove similar logic in CMake. Change-Id: I2bfdd3f5e3d4126910a3feb480cec5ef689954ed Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: Florian Apolloner <florian@apolloner.eu>
-rw-r--r--src/plugins/cmakeprojectmanager/builddirmanager.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/servermodereader.cpp3
-rw-r--r--src/plugins/cmakeprojectmanager/tealeafreader.cpp3
5 files changed, 11 insertions, 5 deletions
diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp
index a6281fd715..71fccc5df8 100644
--- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp
@@ -277,10 +277,6 @@ void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QList<co
const Utils::FileName projectFile = m_buildConfiguration->target()->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 8bba67e359..b4113c53fd 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -221,6 +221,10 @@ CMakeBuildConfiguration::generateProjectTree(const QList<const FileNode*> &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 9ae83d71ad..91aa189e64 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 0a3ef88380..e366d4f6ec 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<FileNode *> knownHeaders,
const QList<const FileNode *> &allFiles)
{
+ if (root->isEmpty())
+ return;
+
auto headerNode = new VirtualFolderNode(root->filePath(), Node::DefaultPriority - 5);
headerNode->setDisplayName(tr("<Headers>"));
diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp
index c05b0bf9c1..e7ecd026dd 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<const FileNode *> &allFiles)
{
+ if (m_files.isEmpty())
+ return;
+
root->setDisplayName(m_projectName);
// Delete no longer necessary file watcher based on m_cmakeFiles: