From 17977b3de72e1d02e1c284831c6e7e01b37ee00b Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@qt.io> Date: Mon, 17 Oct 2016 14:29:40 +0200 Subject: [PATCH] CMake: Turn CMakeConfigItem into a CMake argument Add a method to turn a CMakeConfigItem into a string suitable to be passed to CMake. Change-Id: Ia7834f1c2fad387dd6e6eaa3863f93385d48ca71 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> --- .../cmakeprojectmanager/builddirmanager.cpp | 26 +------------------ .../cmakeprojectmanager/cmakeconfigitem.cpp | 5 ++++ .../cmakeprojectmanager/cmakeconfigitem.h | 1 + 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 9c03f543c0a..cdce5ee44f3 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -72,31 +72,7 @@ namespace Internal { static QStringList toArguments(const CMakeConfig &config, const Kit *k) { return Utils::transform(config, [k](const CMakeConfigItem &i) -> QString { - QString a = QString::fromLatin1("-D"); - a.append(QString::fromUtf8(i.key)); - switch (i.type) { - case CMakeConfigItem::FILEPATH: - a.append(QLatin1String(":FILEPATH=")); - break; - case CMakeConfigItem::PATH: - a.append(QLatin1String(":PATH=")); - break; - case CMakeConfigItem::BOOL: - a.append(QLatin1String(":BOOL=")); - break; - case CMakeConfigItem::STRING: - a.append(QLatin1String(":STRING=")); - break; - case CMakeConfigItem::INTERNAL: - a.append(QLatin1String(":INTERNAL=")); - break; - case CMakeConfigItem::STATIC: - a.append(QLatin1String(":STATIC=")); - break; - } - a.append(i.expandedValue(k)); - - return a; + return i.toArgument(k->macroExpander()); }); } diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp index 226b2b69152..fdf1fc0e458 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp @@ -245,6 +245,11 @@ QString CMakeConfigItem::toString(const Utils::MacroExpander *expander) const return QString::fromUtf8(key) + QLatin1Char(':') + typeStr + QLatin1Char('=') + expandedValue; } +QString CMakeConfigItem::toArgument(const Utils::MacroExpander *expander) const +{ + return "-D" + toString(expander); +} + bool CMakeConfigItem::operator==(const CMakeConfigItem &o) const { // type, isAdvanced and documentation do not matter for a match! diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h index bbee1eb8b16..24e5c54cd9d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h @@ -55,6 +55,7 @@ public: static std::function<bool(const CMakeConfigItem &a, const CMakeConfigItem &b)> sortOperator(); static CMakeConfigItem fromString(const QString &s); QString toString(const Utils::MacroExpander *expander = nullptr) const; + QString toArgument(const Utils::MacroExpander *expander = nullptr) const; bool operator==(const CMakeConfigItem &o) const; -- GitLab