diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-11-17 14:13:55 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-11-22 10:55:44 +0000 |
commit | 1601f53542027017b43531dc58f202d1ba2635cb (patch) | |
tree | ee0463b03c4447fc6692a7b73af09294905d6db2 /src/plugins/cpptools/compileroptionsbuilder.cpp | |
parent | 0269503dd890e72cb9e0756b187797e72a365d7e (diff) | |
download | qt-creator-1601f53542027017b43531dc58f202d1ba2635cb.tar.gz |
Clang: StaticAnalyzer: use the default compiler options builder
Analyzer has clang path and can generate necessary header paths
to be able to use default options builder.
Change-Id: I9bb1fc158f045f6e099817c5557ee7d9e38416fb
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 100c39bfc2..8f1ed2c416 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -29,6 +29,7 @@ #include <projectexplorer/projectexplorerconstants.h> +#include <utils/qtcassert.h> #include <utils/qtcfallthrough.h> #include <QDir> @@ -499,14 +500,20 @@ bool CompilerOptionsBuilder::excludeHeaderPath(const QString &headerPath) const void CompilerOptionsBuilder::addPredefinedHeaderPathsOptions() { - add("-undef"); add("-nostdinc"); add("-nostdlibinc"); - if (!m_clangVersion.isEmpty() - && m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { - add(includeDirOption() + clangIncludeDirectory()); - } + // In case of MSVC we need builtin clang defines to correctly handle clang includes + if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) + add("-undef"); + + addClangIncludeFolder(); +} + +void CompilerOptionsBuilder::addClangIncludeFolder() +{ + QTC_CHECK(!m_clangVersion.isEmpty()); + add(includeDirOption() + clangIncludeDirectory()); } void CompilerOptionsBuilder::addProjectConfigFileInclude() @@ -528,7 +535,7 @@ static QString creatorLibexecPath() QString CompilerOptionsBuilder::clangIncludeDirectory() const { - QDir dir(creatorLibexecPath() + "/clang/lib/clang/" + m_clangVersion + "/include"); + QDir dir(creatorLibexecPath() + "/clang" + clangIncludePath(m_clangVersion)); if (!dir.exists() || !QFileInfo(dir, "stdint.h").exists()) dir = QDir(m_clangResourceDirectory); return QDir::toNativeSeparators(dir.canonicalPath()); |