diff options
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchain.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index 98b7825d5b..f2d45e6dde 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -383,6 +383,8 @@ static Utils::FileName findLocalCompiler(const Utils::FileName &compilerPath, return path.isEmpty() ? compilerPath : path; } +Q_GLOBAL_STATIC_WITH_ARGS(const QVector<QByteArray>, unwantedMacros, ({"__cplusplus"})) + ToolChain::PredefinedMacrosRunner GccToolChain::createPredefinedMacrosRunner() const { // Using a clean environment breaks ccache/distcc/etc. @@ -440,17 +442,20 @@ ToolChain::PredefinedMacrosRunner GccToolChain::createPredefinedMacrosRunner() c = gccPredefinedMacros(findLocalCompiler(compilerCommand, env), arguments, env.toStringList()); - macroCache->insert(arguments, macros); + const QVector<Macro> filteredMacros = Utils::filtered(macros, [](const Macro &m) { + return !unwantedMacros->contains(m.key); + }); + macroCache->insert(arguments, filteredMacros); qCDebug(gccLog) << "Reporting macros to code model:"; - for (const Macro &m : macros) { + for (const Macro &m : filteredMacros) { qCDebug(gccLog) << compilerCommand.toUserOutput() << (lang == Constants::CXX_LANGUAGE_ID ? ": C++ [" : ": C [") << arguments.join(", ") << "]" << QString::fromUtf8(m.toByteArray()); } - return macros; + return filteredMacros; }; } |