CMakePM: Only display CMake preset Kits in the project setup page

Fixes: QTCREATORBUG-29535
Change-Id: I87c16c24a8548efb4374af342947d342e19cc510
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Cristian Adam
2024-02-05 16:23:22 +01:00
parent c553d63a32
commit 87c67fc6d7
2 changed files with 20 additions and 0 deletions

View File

@@ -201,6 +201,8 @@ FilePaths CMakeProjectImporter::presetCandidates()
} }
} }
m_hasCMakePresets = !candidates.isEmpty();
return candidates; return candidates;
} }
@@ -219,6 +221,22 @@ Target *CMakeProjectImporter::preferredTarget(const QList<Target *> &possibleTar
return ProjectImporter::preferredTarget(possibleTargets); 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( static CMakeConfig configurationFromPresetProbe(
const FilePath &importPath, const FilePath &importPath,
const FilePath &sourceDirectory, const FilePath &sourceDirectory,

View File

@@ -24,6 +24,7 @@ public:
Utils::FilePaths importCandidates() final; Utils::FilePaths importCandidates() final;
ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets) final; ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets) final;
bool filter(ProjectExplorer::Kit *k) const final;
Utils::FilePaths presetCandidates(); Utils::FilePaths presetCandidates();
private: private:
@@ -48,6 +49,7 @@ private:
const CMakeProject *m_project; const CMakeProject *m_project;
Utils::TemporaryDirectory m_presetsTempDir; Utils::TemporaryDirectory m_presetsTempDir;
bool m_hasCMakePresets = false;
}; };
#ifdef WITH_TESTS #ifdef WITH_TESTS