summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/compileroptionsbuilder.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2017-11-17 14:13:55 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2017-11-22 10:55:44 +0000
commit1601f53542027017b43531dc58f202d1ba2635cb (patch)
treeee0463b03c4447fc6692a7b73af09294905d6db2 /src/plugins/cpptools/compileroptionsbuilder.cpp
parent0269503dd890e72cb9e0756b187797e72a365d7e (diff)
downloadqt-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.cpp19
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());