From ad8098b372d19c5b7d517230566fc549ff001045 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 31 Aug 2018 10:31:39 +0200 Subject: Fix conflicting LanguageVersion and value __cplusplus define Task-number: QTCREATORBUG-20884 Change-Id: Ieddb277ed5a7c167d75f902275b8f98cc3fc8af4 Reviewed-by: Marco Bubke Reviewed-by: Nikolai Kosjar --- src/plugins/projectexplorer/gcctoolchain.cpp | 11 ++++++++--- 1 file 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, 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 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; }; } -- cgit v1.2.3