From e7a18108e1bf6f3f5959a72a8229449cf4ea6a2b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 27 Jan 2015 10:07:54 +0100 Subject: [PATCH] CppTools: Fix macro collection. "#define XYZ" does not correspond to "-DXYZ" (which means "#define XYZ 1"), but to "-DXYZ=". Change-Id: I3ed44e1457b3df52dc9bdb930ba8f4a04784d207 Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/cppprojects.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/plugins/cpptools/cppprojects.cpp b/src/plugins/cpptools/cppprojects.cpp index 215279825bc..c708a98b886 100644 --- a/src/plugins/cpptools/cppprojects.cpp +++ b/src/plugins/cpptools/cppprojects.cpp @@ -511,7 +511,6 @@ QStringList CompilerOptionsBuilder::createDefineOptions(const QByteArray &define const QString &toolchainType) { QStringList result; - const QString option = QLatin1String(toolchainType == QLatin1String("msvc") ? "/D" : "-D"); foreach (QByteArray def, defines.split('\n')) { if (def.isEmpty()) @@ -535,12 +534,11 @@ QStringList CompilerOptionsBuilder::createDefineOptions(const QByteArray &define QByteArray str = def.mid(8); int spaceIdx = str.indexOf(' '); - QString arg; - if (spaceIdx != -1) { - arg = option + QLatin1String(str.left(spaceIdx) + "=" + str.mid(spaceIdx + 1)); - } else { - arg = option + QLatin1String(str); - } + const QString option = QLatin1String(toolchainType == QLatin1String("msvc") ? "/D" : "-D"); + const bool hasValue = spaceIdx != -1; + QString arg = option + QLatin1String(str.left(hasValue ? spaceIdx : str.size()) + '='); + if (hasValue) + arg += QLatin1String(str.mid(spaceIdx + 1)); arg = arg.replace(QLatin1String("\\\""), QLatin1String("\"")); arg = arg.replace(QLatin1String("\""), QLatin1String("")); if (!result.contains(arg))