From 6235d9b8cc8ed860a19aa3adaea4357eb183c4b8 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 5 Jul 2023 14:53:50 +0200 Subject: [PATCH] CMakePM: use string form for architecture / toolset preset fields Documentation mentions: "Each may be either a string or an object" and "If no strategy field is given, or if the field uses the string form rather than the object form, the behavior is the same as 'set'" Task-number: QTCREATORBUG-28693 Change-Id: Idd8cdffb94e9a943e0b133a63c628d9d8d54eb20 Reviewed-by: Alessandro Portale --- .../cmakeprojectmanager/presetsparser.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/presetsparser.cpp b/src/plugins/cmakeprojectmanager/presetsparser.cpp index f3be87f7ea8..f3f92f76fd5 100644 --- a/src/plugins/cmakeprojectmanager/presetsparser.cpp +++ b/src/plugins/cmakeprojectmanager/presetsparser.cpp @@ -296,6 +296,15 @@ bool parseConfigurePresets(const QJsonValue &jsonValue, if (strategy == "external") preset.architecture->strategy = PresetsDetails::ValueStrategyPair::Strategy::external; + } else { + preset.architecture->strategy = PresetsDetails::ValueStrategyPair::Strategy::set; + } + } else { + const QString value = object.value("architecture").toString(); + if (!value.isEmpty()) { + preset.architecture = PresetsDetails::ValueStrategyPair(); + preset.architecture->value = value; + preset.architecture->strategy = PresetsDetails::ValueStrategyPair::Strategy::set; } } @@ -311,6 +320,15 @@ bool parseConfigurePresets(const QJsonValue &jsonValue, preset.toolset->strategy = PresetsDetails::ValueStrategyPair::Strategy::set; if (strategy == "external") preset.toolset->strategy = PresetsDetails::ValueStrategyPair::Strategy::external; + } else { + preset.toolset->strategy = PresetsDetails::ValueStrategyPair::Strategy::set; + } + } else { + const QString value = object.value("toolset").toString(); + if (!value.isEmpty()) { + preset.toolset = PresetsDetails::ValueStrategyPair(); + preset.toolset->value = value; + preset.toolset->strategy = PresetsDetails::ValueStrategyPair::Strategy::set; } }