diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 89051f2a4a0..c15b9d85fb9 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -382,10 +382,13 @@ void GenericProject::parseProject(RefreshOptions options) } } -QString GenericProject::findCommonSourceRoot(const QStringList &list) +FilePath GenericProject::findCommonSourceRoot() { - QString root = list.front(); - for (const QString &item : list) { + if (m_files.isEmpty()) + return FilePath::fromFileInfo(QFileInfo(m_filesFileName).absolutePath()); + + QString root = m_files.front(); + for (const QString &item : m_files) { if (root.length() > item.length()) root.truncate(item.length()); @@ -396,7 +399,7 @@ QString GenericProject::findCommonSourceRoot(const QStringList &list) } } } - return QFileInfo(root).absolutePath(); + return FilePath::fromString(QFileInfo(root).absolutePath()); } void GenericProject::refresh(RefreshOptions options) @@ -408,7 +411,7 @@ void GenericProject::refresh(RefreshOptions options) auto newRoot = std::make_unique(this); // find the common base directory of all source files - Utils::FilePath baseDir = FilePath::fromFileInfo(QFileInfo(findCommonSourceRoot(m_files))); + Utils::FilePath baseDir = findCommonSourceRoot(); for (const QString &f : m_files) { FileType fileType = FileType::Source; // ### FIXME diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index d914ddc1495..9f742f322f5 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -66,7 +66,7 @@ private: QStringList processEntries(const QStringList &paths, QHash *map = nullptr) const; - static QString findCommonSourceRoot(const QStringList &list); + Utils::FilePath findCommonSourceRoot(); void refreshCppCodeModel(); void updateDeploymentData(); void activeTargetWasChanged();