summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp45
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.h2
2 files changed, 28 insertions, 19 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index bc1b8639a1..b8475eb3ed 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -469,19 +469,21 @@ 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()) {
- const QString option = QLatin1String("-fms-compatibility-version=")
- + QLatin1String(msvcVersion);
- m_options.append(option);
- }
+ const QByteArray msvcVer = msvcVersion();
+
+ if (!msvcVer.isEmpty())
+ add(QLatin1String("-fms-compatibility-version=") + msvcVer);
}
}
@@ -707,16 +709,21 @@ void CompilerOptionsBuilder::addProjectConfigFileInclude()
void CompilerOptionsBuilder::undefineClangVersionMacrosForMsvc()
{
if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) {
- static QStringList macroNames {
- "__clang__",
- "__clang_major__",
- "__clang_minor__",
- "__clang_patchlevel__",
- "__clang_version__"
- };
-
- foreach (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 QStringList macroNames {
+ "__clang__",
+ "__clang_major__",
+ "__clang_minor__",
+ "__clang_patchlevel__",
+ "__clang_version__"
+ };
+
+ foreach (const QString &macroName, macroNames)
+ add(undefineOption() + macroName);
+ }
}
}
diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h
index 66202e72d6..7c78f13c1c 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.h
+++ b/src/plugins/cpptools/compileroptionsbuilder.h
@@ -114,6 +114,8 @@ private:
void addWrappedQtHeadersIncludePath(QStringList &list);
+ QByteArray msvcVersion() const;
+
QStringList m_options;
QString m_clangVersion;