From 82cf0e60fbf4d49987b9e51bf0c1813f61ba1d02 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> Date: Tue, 17 Nov 2015 16:25:02 +0100 Subject: [PATCH] Clang: Fix include paths for MSVC toolchains Prevent libclang from using any builtin includes paths or any standard system directories. The project manager provides us all the necessary information. Task-number: QTCREATORBUG-15345 Change-Id: I70e2dafea8d049a9b7a32b24ce2d4ce3dac2cd3b Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com> --- src/plugins/clangcodemodel/clangutils.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index fd9064a3f56..28c223d80ad 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -41,6 +41,8 @@ #include <cpptools/cppprojects.h> #include <cpptools/cppworkingcopy.h> +#include <projectexplorer/projectexplorerconstants.h> + #include <utils/qtcassert.h> #include <QDir> @@ -122,7 +124,7 @@ public: optionsBuilder.addToolchainAndProjectDefines(); - optionsBuilder.addResourceDirOptions(); + optionsBuilder.addPredefinedMacrosAndHeaderPathsOptions(); optionsBuilder.addWrappedQtHeadersIncludePath(); optionsBuilder.addHeaderPathOptions(); optionsBuilder.addProjectConfigFileInclude(); @@ -154,7 +156,21 @@ private: return false; } - void addResourceDirOptions() + void addPredefinedMacrosAndHeaderPathsOptions() + { + if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) + addPredefinedMacrosAndHeaderPathsOptionsForMsvc(); + else + addPredefinedMacrosAndHeaderPathsOptionsForNonMsvc(); + } + + void addPredefinedMacrosAndHeaderPathsOptionsForMsvc() + { + add(QLatin1String("-nostdinc")); + add(QLatin1String("-undef")); + } + + void addPredefinedMacrosAndHeaderPathsOptionsForNonMsvc() { static const QString resourceDir = getResourceDir(); if (!resourceDir.isEmpty()) { -- GitLab