diff options
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 0192386ddb..49457718a7 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -35,6 +35,7 @@ #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectmacro.h> +#include <utils/algorithm.h> #include <utils/cpplanguage_details.h> #include <utils/fileutils.h> #include <utils/qtcassert.h> @@ -137,7 +138,7 @@ QStringList CompilerOptionsBuilder::build(ProjectFile::Kind fileKind, addTargetTriple(); updateFileLanguage(fileKind); addLanguageVersionAndExtensions(); - enableExceptions(); + addMsvcExceptions(); addPrecompiledHeaderOptions(usePrecompiledHeaders); addProjectConfigFileInclude(); @@ -273,6 +274,17 @@ void CompilerOptionsBuilder::addCompilerFlags() add(m_compilerFlags.flags); } +void CompilerOptionsBuilder::addMsvcExceptions() +{ + if (!m_clStyle) + return; + if (Utils::anyOf(m_projectPart.toolChainMacros, [](const ProjectExplorer::Macro ¯o) { + return macro.key == "_CPPUNWIND"; + })) { + enableExceptions(); + } +} + void CompilerOptionsBuilder::enableExceptions() { // With "--driver-mode=cl" exceptions are disabled (clang 8). |