From 87c67fc6d7193883edb9a0244296cd429f0473de Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 5 Feb 2024 16:23:22 +0100 Subject: [PATCH] CMakePM: Only display CMake preset Kits in the project setup page Fixes: QTCREATORBUG-29535 Change-Id: I87c16c24a8548efb4374af342947d342e19cc510 Reviewed-by: Marcus Tillmanns Reviewed-by: --- .../cmakeprojectimporter.cpp | 18 ++++++++++++++++++ .../cmakeprojectmanager/cmakeprojectimporter.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 2ff01898cdc..450d1540102 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -201,6 +201,8 @@ FilePaths CMakeProjectImporter::presetCandidates() } } + m_hasCMakePresets = !candidates.isEmpty(); + return candidates; } @@ -219,6 +221,22 @@ Target *CMakeProjectImporter::preferredTarget(const QList &possibleTar return ProjectImporter::preferredTarget(possibleTargets); } +bool CMakeProjectImporter::filter(ProjectExplorer::Kit *k) const +{ + if (!m_hasCMakePresets) + return true; + + const auto presetConfigItem = CMakeConfigurationKitAspect::cmakePresetConfigItem(k); + if (presetConfigItem.isNull()) + return false; + + const QString presetName = presetConfigItem.expandedValue(k); + return std::find_if(m_project->presetsData().configurePresets.cbegin(), + m_project->presetsData().configurePresets.cend(), + [&presetName](const auto &preset) { return presetName == preset.name; }) + != m_project->presetsData().configurePresets.cend(); +} + static CMakeConfig configurationFromPresetProbe( const FilePath &importPath, const FilePath &sourceDirectory, diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h index e3b329e722f..82e1835ba7b 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h @@ -24,6 +24,7 @@ public: Utils::FilePaths importCandidates() final; ProjectExplorer::Target *preferredTarget(const QList &possibleTargets) final; + bool filter(ProjectExplorer::Kit *k) const final; Utils::FilePaths presetCandidates(); private: @@ -48,6 +49,7 @@ private: const CMakeProject *m_project; Utils::TemporaryDirectory m_presetsTempDir; + bool m_hasCMakePresets = false; }; #ifdef WITH_TESTS