summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2020-06-10 11:39:12 +0200
committerTobias Hunger <tobias.hunger@qt.io>2020-06-11 12:34:25 +0000
commit182c460a2b257c821f82c2708d84529a99f3e7de (patch)
tree1b25ac69e99a18dfa82c79e57b453bfa5807c090
parente4ded6a08fd06a75d227bc6a172569f835f09434 (diff)
downloadqt-creator-182c460a2b257c821f82c2708d84529a99f3e7de.tar.gz
CMake: Do not treat project with the empty string as a name as invalid
CMake will happily accept the empty string as a project name, so do not treat that is invalid in Creator. Apparently the empty project name will get generated by CMake itself if no project() command is found in the top level CMakeLists.txt file. Make sure to set a sensible name if the top-level project has no name, using the directory name of the source directory instead. Change-Id: I3b861daa13c1d0fec31c294ef0ac15338310020d Fixes: QTCREATORBUG-24044 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/fileapidataextractor.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/fileapiparser.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
index 2cd3782e75..6c5f7791e2 100644
--- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
@@ -581,6 +581,8 @@ std::pair<std::unique_ptr<CMakeProjectNode>, QSet<FilePath>> generateRootProject
= findOrDefault(data.codemodel.projects, equal(&FileApiDetails::Project::parent, -1));
if (!topLevelProject.name.isEmpty())
result.first->setDisplayName(topLevelProject.name);
+ else
+ result.first->setDisplayName(sourceDirectory.fileName());
QHash<FilePath, ProjectNode *> cmakeListsNodes = addCMakeLists(result.first.get(),
std::move(data.cmakeListNodes));
diff --git a/src/plugins/cmakeprojectmanager/fileapiparser.cpp b/src/plugins/cmakeprojectmanager/fileapiparser.cpp
index f1eb1e8aaa..e60040f703 100644
--- a/src/plugins/cmakeprojectmanager/fileapiparser.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapiparser.cpp
@@ -306,7 +306,7 @@ static std::vector<Project> extractProjects(const QJsonArray &projects, QString
qCDebug(cmakeFileApi) << "Project read:" << project.name << project.directories;
- if (project.name.isEmpty() || project.directories.empty()) {
+ if (project.directories.empty()) {
errorMessage = QCoreApplication::translate(
"CMakeProjectManager::Internal",
"Invalid codemodel file generated by CMake: Broken project data.");