diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 9c03f543c0a243f1ec7d85b48a46b4f6fdb7fc3f..cdce5ee44f361f47ccf20764e758ab2c85f1f031 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 226b2b6915258fd8d232b606c030f4824cfd24fa..fdf1fc0e4587383be2d6fcf71693917a81b44fa8 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 bbee1eb8b160c377e135e1bf0fcf0573a037a130..24e5c54cd9de10cddfa1dbc2b0c6a5de88e9b280 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;