forked from qt-creator/qt-creator
Clang: Allow to forward warnings flags from build system
Change-Id: I47ebb1ce4f3b5544408eb1d0f891ed5090394282 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -452,6 +452,10 @@ public:
|
||||
|
||||
const QStringList &options() const { return m_options; }
|
||||
const Core::Id &diagnosticConfigId() const { return m_diagnosticConfigId; }
|
||||
CppTools::UseBuildSystemWarnings useBuildSystemWarnings() const
|
||||
{
|
||||
return m_useBuildSystemWarnings;
|
||||
}
|
||||
|
||||
private:
|
||||
void addLanguageOptions()
|
||||
@@ -491,6 +495,9 @@ private:
|
||||
void addDiagnosticOptionsForConfig(const CppTools::ClangDiagnosticConfig &diagnosticConfig)
|
||||
{
|
||||
m_diagnosticConfigId = diagnosticConfig.id();
|
||||
m_useBuildSystemWarnings = diagnosticConfig.useBuildSystemWarnings()
|
||||
? CppTools::UseBuildSystemWarnings::Yes
|
||||
: CppTools::UseBuildSystemWarnings::No;
|
||||
|
||||
m_options.append(diagnosticConfig.clangOptions());
|
||||
addClangTidyOptions(diagnosticConfig);
|
||||
@@ -565,6 +572,7 @@ private:
|
||||
const CppTools::ProjectPart &m_projectPart;
|
||||
|
||||
Core::Id m_diagnosticConfigId;
|
||||
CppTools::UseBuildSystemWarnings m_useBuildSystemWarnings = CppTools::UseBuildSystemWarnings::No;
|
||||
CppTools::CompilerOptionsBuilder m_builder;
|
||||
QStringList m_options;
|
||||
};
|
||||
@@ -586,13 +594,13 @@ void ClangEditorDocumentProcessor::updateBackendDocument(CppTools::ProjectPart &
|
||||
return;
|
||||
}
|
||||
|
||||
const QStringList projectPartOptions = ClangCodeModel::Utils::createClangOptions(
|
||||
projectPart,
|
||||
CppTools::ProjectFile::Unsupported); // No language option as FileOptionsBuilder adds it.
|
||||
|
||||
const FileOptionsBuilder fileOptions(filePath(), projectPart);
|
||||
m_diagnosticConfigId = fileOptions.diagnosticConfigId();
|
||||
|
||||
const QStringList projectPartOptions = ClangCodeModel::Utils::createClangOptions(
|
||||
projectPart, fileOptions.useBuildSystemWarnings(),
|
||||
CppTools::ProjectFile::Unsupported); // No language option as FileOptionsBuilder adds it.
|
||||
|
||||
const QStringList compilationArguments = projectPartOptions + fileOptions.options();
|
||||
|
||||
m_communicator.documentsOpened(
|
||||
|
||||
@@ -66,11 +66,13 @@ namespace Utils {
|
||||
class LibClangOptionsBuilder final : public CompilerOptionsBuilder
|
||||
{
|
||||
public:
|
||||
LibClangOptionsBuilder(const ProjectPart &projectPart)
|
||||
LibClangOptionsBuilder(const ProjectPart &projectPart,
|
||||
UseBuildSystemWarnings useBuildSystemWarnings)
|
||||
: CompilerOptionsBuilder(projectPart,
|
||||
UseSystemHeader::No,
|
||||
UseTweakedHeaderPaths::Yes,
|
||||
UseLanguageDefines::No,
|
||||
useBuildSystemWarnings,
|
||||
QString(CLANG_VERSION),
|
||||
QString(CLANG_RESOURCE_DIR))
|
||||
{
|
||||
@@ -101,9 +103,12 @@ private:
|
||||
}
|
||||
};
|
||||
|
||||
QStringList createClangOptions(const ProjectPart &projectPart, ProjectFile::Kind fileKind)
|
||||
QStringList createClangOptions(const ProjectPart &projectPart,
|
||||
UseBuildSystemWarnings useBuildSystemWarnings,
|
||||
ProjectFile::Kind fileKind)
|
||||
{
|
||||
return LibClangOptionsBuilder(projectPart).build(fileKind, UsePrecompiledHeaders::No);
|
||||
return LibClangOptionsBuilder(projectPart, useBuildSystemWarnings)
|
||||
.build(fileKind, UsePrecompiledHeaders::No);
|
||||
}
|
||||
|
||||
ProjectPart::Ptr projectPartForFile(const QString &filePath)
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <cplusplus/Icons.h>
|
||||
|
||||
#include <cpptools/projectpart.h>
|
||||
#include <cpptools/compileroptionsbuilder.h>
|
||||
|
||||
#include <QTextCursor>
|
||||
|
||||
@@ -53,6 +54,7 @@ CppTools::CppEditorDocumentHandle *cppDocument(const QString &filePath);
|
||||
void setLastSentDocumentRevision(const QString &filePath, uint revision);
|
||||
|
||||
QStringList createClangOptions(const CppTools::ProjectPart &projectPart,
|
||||
CppTools::UseBuildSystemWarnings useBuildSystemWarnings,
|
||||
CppTools::ProjectFile::Kind fileKind);
|
||||
|
||||
CppTools::ProjectPart::Ptr projectPartForFile(const QString &filePath);
|
||||
|
||||
Reference in New Issue
Block a user