CMake: use filePaths to scan for build directories

Change-Id: I34ccf91d9ca2b8e0b1927ad8b73e2ce2b54ecf0e
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
David Schulz
2021-09-09 08:27:28 +02:00
parent 736820a1a0
commit 66b97761b6

View File

@@ -74,17 +74,14 @@ struct DirectoryData
QVector<ToolChainDescription> toolChains; QVector<ToolChainDescription> toolChains;
}; };
static QStringList scanDirectory(const QString &path, const QString &prefix) static QStringList scanDirectory(const FilePath &path, const QString &prefix)
{ {
QStringList result; QStringList result;
qCDebug(cmInputLog) << "Scanning for directories matching" << prefix << "in" << path; qCDebug(cmInputLog) << "Scanning for directories matching" << prefix << "in" << path;
const QDir base = QDir(path); foreach (const FilePath &entry, path.dirEntries({prefix + ".*"}, QDir::Dirs | QDir::NoDotAndDotDot)) {
foreach (const QString &dir, base.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { QTC_ASSERT(entry.isDir(), continue);
const QString subPath = path + '/' + dir; result.append(entry.toString());
qCDebug(cmInputLog) << "Checking" << subPath;
if (dir.startsWith(prefix))
result.append(subPath);
} }
return result; return result;
} }
@@ -119,13 +116,15 @@ QStringList CMakeProjectImporter::importCandidates()
{ {
QStringList candidates; QStringList candidates;
QFileInfo pfi = projectFilePath().toFileInfo(); candidates << scanDirectory(projectFilePath().absolutePath(), "build");
candidates << scanDirectory(pfi.absolutePath(), "build");
foreach (Kit *k, KitManager::kits()) { foreach (Kit *k, KitManager::kits()) {
QFileInfo fi(CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(), k, FilePath shadowBuildDirectory
QString(), BuildConfiguration::Unknown).toString()); = CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(),
candidates << scanDirectory(fi.absolutePath(), QString()); k,
QString(),
BuildConfiguration::Unknown);
candidates << scanDirectory(shadowBuildDirectory.absolutePath(), QString());
} }
const QStringList finalists = Utils::filteredUnique(candidates); const QStringList finalists = Utils::filteredUnique(candidates);
qCInfo(cmInputLog) << "import candidates:" << finalists; qCInfo(cmInputLog) << "import candidates:" << finalists;