diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2020-06-10 11:39:12 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2020-06-11 12:34:25 +0000 |
commit | 182c460a2b257c821f82c2708d84529a99f3e7de (patch) | |
tree | 1b25ac69e99a18dfa82c79e57b453bfa5807c090 | |
parent | e4ded6a08fd06a75d227bc6a172569f835f09434 (diff) | |
download | qt-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.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/fileapiparser.cpp | 2 |
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."); |