From a2a8f56b6e7429ddf7f26052dd92276938cd3d21 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 29 Mar 2022 15:46:28 +0200 Subject: [PATCH] CMakePM: Filter out empty key configuration items There were cases when an empty "-D" CMake command line parameter would be genered, resulting in a failed CMake project configuration. Task-number: QTCREATORBUG-27256 Fixes: QTCREATORBUG-27237 Change-Id: Ic26c9dfe72db154cd76fdcc913eb7fe623b3123c Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/cmakebuildconfiguration.cpp | 2 +- src/plugins/cmakeprojectmanager/cmakekitinformation.cpp | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index fe416e01bca..c2f49f83362 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -619,7 +619,7 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments() *it = ci; if (ci.isUnset) initialList.erase(it); - } else { + } else if (!ci.key.isEmpty()) { initialList.push_back(ci); } } diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index f627db0d393..22c0847b74c 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -1122,8 +1122,12 @@ void CMakeConfigurationKitAspect::fromStringList(Kit *k, const QStringList &in) QStringList CMakeConfigurationKitAspect::toArgumentsList(const Kit *k) { - return Utils::transform(CMakeConfigurationKitAspect::configuration(k).toList(), - [](const CMakeConfigItem &i) { return i.toArgument(nullptr); }); + QStringList current = Utils::transform(CMakeConfigurationKitAspect::configuration(k).toList(), + [](const CMakeConfigItem &i) { + return i.toArgument(nullptr); + }); + current = Utils::filtered(current, [](const QString &s) { return s != "-D" || s != "-U"; }); + return current; } CMakeConfig CMakeConfigurationKitAspect::defaultConfiguration(const Kit *k)