CMakePM: Don't show anything but CMake Preset Kits during initial configure

This is for projects that use CMake Presets, and matches the expectations of the users using CMake Presets.

The user can still enable a Kit from the left list of Kits, which is not filtered.

Amends 87c67fc6d7

Task-number: QTCREATORBUG-29535
Change-Id: If97eef867a687c877b1cbd08cd4537fe6459136f
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-20 13:45:48 +01:00
parent 1a7e1b5dbd
commit c9208932d7
4 changed files with 15 additions and 4 deletions

View File

@@ -7,6 +7,7 @@
#include "cmakeprojectconstants.h" #include "cmakeprojectconstants.h"
#include "cmakeprojectimporter.h" #include "cmakeprojectimporter.h"
#include "cmakeprojectmanagertr.h" #include "cmakeprojectmanagertr.h"
#include "presetsmacros.h"
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
@@ -301,6 +302,18 @@ void CMakeProject::readPresets()
m_presetsData = combinePresets(cmakePresetsData, cmakeUserPresetsData); m_presetsData = combinePresets(cmakePresetsData, cmakeUserPresetsData);
setupBuildPresets(m_presetsData); setupBuildPresets(m_presetsData);
for (const auto &configPreset : m_presetsData.configurePresets) {
if (configPreset.hidden.value())
continue;
if (configPreset.condition) {
if (!CMakePresets::Macros::evaluatePresetCondition(configPreset, projectFilePath()))
continue;
}
m_presetsData.havePresets = true;
break;
}
} }
bool CMakeProject::setupTarget(Target *t) bool CMakeProject::setupTarget(Target *t)

View File

@@ -201,8 +201,6 @@ FilePaths CMakeProjectImporter::presetCandidates()
} }
} }
m_hasCMakePresets = !candidates.isEmpty();
return candidates; return candidates;
} }
@@ -223,7 +221,7 @@ Target *CMakeProjectImporter::preferredTarget(const QList<Target *> &possibleTar
bool CMakeProjectImporter::filter(ProjectExplorer::Kit *k) const bool CMakeProjectImporter::filter(ProjectExplorer::Kit *k) const
{ {
if (!m_hasCMakePresets) if (!m_project->presetsData().havePresets)
return true; return true;
const auto presetConfigItem = CMakeConfigurationKitAspect::cmakePresetConfigItem(k); const auto presetConfigItem = CMakeConfigurationKitAspect::cmakePresetConfigItem(k);

View File

@@ -49,7 +49,6 @@ 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

View File

@@ -140,6 +140,7 @@ class PresetsData
{ {
public: public:
int version = 0; int version = 0;
bool havePresets = false;
QVersionNumber cmakeMinimimRequired; QVersionNumber cmakeMinimimRequired;
QHash<QString, QString> vendor; QHash<QString, QString> vendor;
std::optional<QStringList> include; std::optional<QStringList> include;