forked from qt-creator/qt-creator
Convert macros from plain QByteArray to a vector of structs
The old code model expected the macros as C++ formatted text
("#define Foo 42) but newer targets like the Clang codemodel expect key
value arguments like "-DFoo=42". So instead of parsing the text again and
again we use an abstract data description.
Task-number: QTCREATORBUG-17915
Change-Id: I0179fd13c48a581e91ee79bba9d42d501c26f19f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -975,17 +975,7 @@ void QbsProject::updateCppCodeModel()
|
||||
QStringList list = props.getModulePropertiesAsStringList(
|
||||
QLatin1String(CONFIG_CPP_MODULE),
|
||||
QLatin1String(CONFIG_DEFINES));
|
||||
QByteArray grpDefines;
|
||||
foreach (const QString &def, list) {
|
||||
QByteArray data = def.toUtf8();
|
||||
int pos = data.indexOf('=');
|
||||
if (pos >= 0)
|
||||
data[pos] = ' ';
|
||||
else
|
||||
data.append(" 1"); // cpp.defines: [ "FOO" ] is considered to be "FOO=1"
|
||||
grpDefines += (QByteArray("#define ") + data + '\n');
|
||||
}
|
||||
rpp.setDefines(grpDefines);
|
||||
rpp.setMacros(Utils::transform<QVector>(list, [](const QString &s) { return ProjectExplorer::Macro::fromKeyValue(s); }));
|
||||
|
||||
list = props.getModulePropertiesAsStringList(QLatin1String(CONFIG_CPP_MODULE),
|
||||
QLatin1String(CONFIG_INCLUDEPATHS));
|
||||
|
||||
Reference in New Issue
Block a user