CMakePM: When using presets only use presets for candidates

Since the CMake presets is built upon Imports, when loading the presets
it's better to only use the candidates from preset Kits and not any
matching Kit that could handle the build directory.

This makes working with CMake Presets a bit easier.

Task-number: QTCREATORBUG-29535
Change-Id: I895e2e9162763e4cf3af5cdef5c9d5b228211fab
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Cristian Adam
2024-02-05 13:49:27 +01:00
parent 98acd22734
commit 7454f84901
2 changed files with 23 additions and 13 deletions

View File

@@ -147,8 +147,9 @@ static QString displayPresetName(const QString &presetName)
FilePaths CMakeProjectImporter::importCandidates()
{
FilePaths candidates;
FilePaths candidates = presetCandidates();
if (candidates.isEmpty()) {
candidates << scanDirectory(projectFilePath().absolutePath(), "build");
const QList<Kit *> kits = KitManager::kits();
@@ -160,6 +161,16 @@ FilePaths CMakeProjectImporter::importCandidates()
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())
@@ -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<Target *> &possibleTargets)

View File

@@ -25,6 +25,7 @@ public:
Utils::FilePaths importCandidates() final;
ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets) final;
Utils::FilePaths presetCandidates();
private:
QList<void *> examineDirectory(const Utils::FilePath &importPath,
QString *warningMessage) const final;