diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-09-27 10:32:52 +0200 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2017-10-23 12:46:34 +0000 |
commit | b10f8484c7bb62b297fbbdafdbf9ef0e7074a01a (patch) | |
tree | 5d7af481cacb6f618d121185474e00cfc36f1958 /src/plugins/clangcodemodel/clangutils.cpp | |
parent | f19facd37842de97f2330e3a34c2bdfc3552dea9 (diff) |
CppTools: merge CompilerOptionsBuilder with Clang one
Since it's never used for other compilers.
Change-Id: I9512692d1dc9f9a701ea2453b7d50005478bed5d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel/clangutils.cpp')
-rw-r--r-- | src/plugins/clangcodemodel/clangutils.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 0058ee4023..90abd59e95 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -31,7 +31,7 @@ #include <coreplugin/icore.h> #include <coreplugin/idocument.h> #include <cpptools/baseeditordocumentparser.h> -#include <cpptools/clangcompileroptionsbuilder.h> +#include <cpptools/compileroptionsbuilder.h> #include <cpptools/cppmodelmanager.h> #include <cpptools/editordocumenthandle.h> #include <cpptools/projectpart.h> @@ -70,21 +70,53 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, const QString &fil return createClangOptions(pPart, fileKind); } -class LibClangOptionsBuilder final : public ClangCompilerOptionsBuilder +static QString creatorResourcePath() +{ +#ifndef UNIT_TESTS + return Core::ICore::instance()->resourcePath(); +#else + return QString(); +#endif +} + +class LibClangOptionsBuilder final : public CompilerOptionsBuilder { public: LibClangOptionsBuilder(const ProjectPart &projectPart) - : ClangCompilerOptionsBuilder(projectPart, CLANG_VERSION, CLANG_RESOURCE_DIR) + : CompilerOptionsBuilder(projectPart, CLANG_VERSION, CLANG_RESOURCE_DIR) { } + void addPredefinedHeaderPathsOptions() final + { + CompilerOptionsBuilder::addPredefinedHeaderPathsOptions(); + addWrappedQtHeadersIncludePath(); + } + void addExtraOptions() final { addDummyUiHeaderOnDiskIncludePath(); - ClangCompilerOptionsBuilder::addExtraOptions(); + add("-fmessage-length=0"); + add("-fdiagnostics-show-note-include-stack"); + add("-fmacro-backtrace-limit=0"); + add("-fretain-comments-from-system-headers"); + add("-ferror-limit=1000"); } private: + void addWrappedQtHeadersIncludePath() + { + static const QString resourcePath = creatorResourcePath(); + static QString wrappedQtHeadersPath = resourcePath + "/cplusplus/wrappedQtHeaders"; + QTC_ASSERT(QDir(wrappedQtHeadersPath).exists(), return;); + + if (m_projectPart.qtVersion != CppTools::ProjectPart::NoQt) { + const QString wrappedQtCoreHeaderPath = wrappedQtHeadersPath + "/QtCore"; + add(includeDirOption() + QDir::toNativeSeparators(wrappedQtHeadersPath)); + add(includeDirOption() + QDir::toNativeSeparators(wrappedQtCoreHeaderPath)); + } + } + void addDummyUiHeaderOnDiskIncludePath() { const QString path = ModelManagerSupportClang::instance()->dummyUiHeaderOnDiskDirPath(); |