diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp index 75f4f025736..1ead54a811a 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzerruncontrol.cpp @@ -263,6 +263,13 @@ private: return CompilerOptionsBuilder::defineOption(); } + QString undefineOption() const override + { + if (m_isMsvcToolchain) + return QLatin1String("/U"); + return CompilerOptionsBuilder::undefineOption(); + } + void enableExceptions() override { if (m_isMsvcToolchain) diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 6f2991fea06..f3b89c27f6b 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -342,7 +342,7 @@ void CompilerOptionsBuilder::undefineCppLanguageFeatureMacrosForMsvc2015() // Undefine the language feature macros that are pre-defined in clang-cl 3.8.0, // but not in MSVC2015's cl.exe. foreach (const QString ¯oName, languageFeatureMacros()) - m_options.append(QLatin1String("/U") + macroName); + m_options.append(undefineOption() + macroName); } } @@ -364,6 +364,11 @@ QString CompilerOptionsBuilder::defineOption() const return QLatin1String("-D"); } +QString CompilerOptionsBuilder::undefineOption() const +{ + return QLatin1String("-U"); +} + static bool isGccOrMinGwToolchain(const Core::Id &toolchainType) { return toolchainType == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h index 34c7103f1b5..a4aec5afdd9 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.h +++ b/src/plugins/cpptools/compileroptionsbuilder.h @@ -60,6 +60,7 @@ protected: virtual bool excludeHeaderPath(const QString &headerPath) const; virtual QString defineOption() const; + virtual QString undefineOption() const; virtual QString includeOption() const; const ProjectPart m_projectPart;