diff options
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 61f8242537..fae2e29fb5 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -404,16 +404,20 @@ static QByteArray msCompatibilityVersionFromDefines(const ProjectExplorer::Macro return QByteArray(); } +QByteArray CompilerOptionsBuilder::msvcVersion() const +{ + const QByteArray version = msCompatibilityVersionFromDefines(m_projectPart.toolChainMacros); + return !version.isEmpty() ? version + : msCompatibilityVersionFromDefines(m_projectPart.projectMacros); +} + void CompilerOptionsBuilder::addMsvcCompatibilityVersion() { if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID || m_projectPart.toolchainType == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID) { - const ProjectExplorer::Macros macros = m_projectPart.toolChainMacros - + m_projectPart.projectMacros; - const QByteArray msvcVersion = msCompatibilityVersionFromDefines(macros); - - if (!msvcVersion.isEmpty()) - add(QLatin1String("-fms-compatibility-version=") + msvcVersion); + const QByteArray msvcVer = msvcVersion(); + if (!msvcVer.isEmpty()) + add(QLatin1String("-fms-compatibility-version=") + msvcVer); } } @@ -599,16 +603,21 @@ void CompilerOptionsBuilder::addProjectConfigFileInclude() void CompilerOptionsBuilder::undefineClangVersionMacrosForMsvc() { if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { - static const QStringList macroNames { - "__clang__", - "__clang_major__", - "__clang_minor__", - "__clang_patchlevel__", - "__clang_version__" - }; - - for (const QString ¯oName : macroNames) - add(undefineOption + macroName); + const QByteArray msvcVer = msvcVersion(); + if (msvcVer.toFloat() < 14.f) { + // Original fix was only for msvc 2013 (version 12.0) + // Undefying them for newer versions is not necessary and breaks boost. + static const QStringList macroNames { + "__clang__", + "__clang_major__", + "__clang_minor__", + "__clang_patchlevel__", + "__clang_version__" + }; + + for (const QString ¯oName : macroNames) + add(undefineOption + macroName); + } } } |