forked from qt-creator/qt-creator
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:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user