summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/compileroptionsbuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp41
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 &macroName : 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 &macroName : macroNames)
+ add(undefineOption + macroName);
+ }
}
}