diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 51acd3a5a6c..718b0dad288 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -441,6 +441,7 @@ public: { // Determine the driver mode from toolchain and flags. m_builder.evaluateCompilerFlags(); + m_isClMode = m_builder.isClStyle(); addLanguageOptions(); addGlobalDiagnosticOptions(); // Before addDiagnosticOptions() so users still can overwrite. @@ -498,7 +499,10 @@ private: ? CppTools::UseBuildSystemWarnings::Yes : CppTools::UseBuildSystemWarnings::No; - m_options.append(diagnosticConfig.clangOptions()); + const QStringList options = m_isClMode + ? CppTools::clangArgsForCl(diagnosticConfig.clangOptions()) + : diagnosticConfig.clangOptions(); + m_options.append(options); } void addGlobalDiagnosticOptions() @@ -537,6 +541,7 @@ private: Core::Id m_diagnosticConfigId; CppTools::UseBuildSystemWarnings m_useBuildSystemWarnings = CppTools::UseBuildSystemWarnings::No; CppTools::CompilerOptionsBuilder m_builder; + bool m_isClMode = false; QStringList m_options; }; } // namespace diff --git a/src/plugins/clangtools/clangtidyclazyrunner.cpp b/src/plugins/clangtools/clangtidyclazyrunner.cpp index 34a149c8236..976fbd9f9ad 100644 --- a/src/plugins/clangtools/clangtidyclazyrunner.cpp +++ b/src/plugins/clangtools/clangtidyclazyrunner.cpp @@ -48,11 +48,16 @@ using namespace CppTools; namespace ClangTools { namespace Internal { +static bool isClMode(const QStringList &options) +{ + return options.contains("--driver-mode=cl"); +} + static QStringList serializeDiagnosticsArguments(const QStringList &baseOptions, const QString &outputFilePath) { const QStringList serializeArgs{"-serialize-diagnostics", outputFilePath}; - if (baseOptions.contains("--driver-mode=cl")) + if (isClMode(baseOptions)) return clangArgsForCl(serializeArgs); return serializeArgs; } @@ -104,7 +109,8 @@ static QStringList clangArguments(const ClangDiagnosticConfig &diagnosticConfig, { QStringList arguments; arguments << ClangDiagnosticConfigsModel::globalDiagnosticOptions() - << diagnosticConfig.clangOptions() + << (isClMode(baseOptions) ? CppTools::clangArgsForCl(diagnosticConfig.clangOptions()) + : diagnosticConfig.clangOptions()) << baseOptions; if (LOG().isDebugEnabled()) diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index 3e448533743..b8677256916 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -366,7 +366,6 @@ static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model) config.setClangOptions({ "-Wall", "-Wextra", - "-Wno-c++98-compat" }); model.appendOrUpdate(config);