diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 2d9631eb400..2ff01898cdc 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -147,20 +147,31 @@ static QString displayPresetName(const QString &presetName) FilePaths CMakeProjectImporter::importCandidates() { - FilePaths candidates; + FilePaths candidates = presetCandidates(); - candidates << scanDirectory(projectFilePath().absolutePath(), "build"); + if (candidates.isEmpty()) { + candidates << scanDirectory(projectFilePath().absolutePath(), "build"); - const QList kits = KitManager::kits(); - for (const Kit *k : kits) { - FilePath shadowBuildDirectory - = CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(), - k, - QString(), - BuildConfiguration::Unknown); - candidates << scanDirectory(shadowBuildDirectory.absolutePath(), QString()); + const QList kits = KitManager::kits(); + for (const Kit *k : kits) { + FilePath shadowBuildDirectory + = CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(), + k, + QString(), + BuildConfiguration::Unknown); + candidates << scanDirectory(shadowBuildDirectory.absolutePath(), QString()); + } } + const FilePaths finalists = Utils::filteredUnique(candidates); + qCInfo(cmInputLog) << "import candidates:" << finalists; + return finalists; +} + +FilePaths CMakeProjectImporter::presetCandidates() +{ + FilePaths candidates; + for (const auto &configPreset : m_project->presetsData().configurePresets) { if (configPreset.hidden.value()) continue; @@ -190,9 +201,7 @@ FilePaths CMakeProjectImporter::importCandidates() } } - const FilePaths finalists = Utils::filteredUnique(candidates); - qCInfo(cmInputLog) << "import candidates:" << finalists; - return finalists; + return candidates; } Target *CMakeProjectImporter::preferredTarget(const QList &possibleTargets) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h index ba8af4d61bc..e3b329e722f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h @@ -25,6 +25,7 @@ public: Utils::FilePaths importCandidates() final; ProjectExplorer::Target *preferredTarget(const QList &possibleTargets) final; + Utils::FilePaths presetCandidates(); private: QList examineDirectory(const Utils::FilePath &importPath, QString *warningMessage) const final;