aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppcodemodelsettings.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <[email protected]>2015-11-10 16:54:53 +0100
committerNikolai Kosjar <[email protected]>2015-11-11 15:14:56 +0000
commitd8f119c8a222188556bf63e7adbef24c9ca3fe7f (patch)
treef6d606959297dc186910ad040f3a021dff8c20b7 /src/plugins/cpptools/cppcodemodelsettings.cpp
parent72785e3a11bea85f09a76084813c890f5d26f9d0 (diff)
Clang: Allow to provide extra command line options
This can be used to experiment with clang options that e.g. affect diagnostics. Changes take effect on editor re-open. Change-Id: Ie46d0ff085a3700a748dbcf4b94b93b0bf9c4642 Reviewed-by: Leena Miettinen <[email protected]> Reviewed-by: Eike Ziller <[email protected]>
Diffstat (limited to 'src/plugins/cpptools/cppcodemodelsettings.cpp')
-rw-r--r--src/plugins/cpptools/cppcodemodelsettings.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcodemodelsettings.cpp b/src/plugins/cpptools/cppcodemodelsettings.cpp
index 35555868a13..5d35cf7d3e8 100644
--- a/src/plugins/cpptools/cppcodemodelsettings.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettings.cpp
@@ -36,6 +36,7 @@ using namespace CppTools;
static QLatin1String cppHeaderMimeType(Constants::CPP_HEADER_MIMETYPE);
static QLatin1String cHeaderMimeType(Constants::C_HEADER_MIMETYPE);
+static QLatin1String clangExtraOptionsKey(Constants::CPPTOOLS_EXTRA_CLANG_OPTIONS);
void CppCodeModelSettings::fromSettings(QSettings *s)
{
@@ -45,6 +46,8 @@ void CppCodeModelSettings::fromSettings(QSettings *s)
foreach (const QString &mimeType, supportedMimeTypes())
setIdForMimeType(supporters, mimeType);
+ setExtraClangOptions(s->value(clangExtraOptionsKey, defaultExtraClangOptions()).toStringList());
+
QVariant v = s->value(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_PCH_USAGE), PchUse_None);
setPCHUsage(static_cast<PCHUsage>(v.toInt()));
s->endGroup();
@@ -59,6 +62,7 @@ void CppCodeModelSettings::toSettings(QSettings *s)
foreach (const QString &mimeType, m_modelManagerSupportByMimeType.keys())
var[mimeType] = m_modelManagerSupportByMimeType[mimeType];
s->setValue(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_SUPPORTERS_KEY), QVariant(var));
+ s->setValue(clangExtraOptionsKey, extraClangOptions());
s->setValue(QLatin1String(Constants::CPPTOOLS_MODEL_MANAGER_PCH_USAGE), pchUsage());
s->endGroup();
@@ -116,6 +120,33 @@ bool CppCodeModelSettings::hasModelManagerSupportIdForMimeType(const QString &mi
return m_modelManagerSupportByMimeType.value(mimeType) == id;
}
+QStringList CppCodeModelSettings::defaultExtraClangOptions()
+{
+ return {
+ QStringLiteral("-Weverything"),
+ QStringLiteral("-Wno-c++98-compat"),
+ QStringLiteral("-Wno-c++98-compat-pedantic"),
+ QStringLiteral("-Wno-unused-macros"),
+ QStringLiteral("-Wno-newline-eof"),
+ QStringLiteral("-Wno-exit-time-destructors"),
+ QStringLiteral("-Wno-global-constructors"),
+ QStringLiteral("-Wno-gnu-zero-variadic-macro-arguments"),
+ QStringLiteral("-Wno-documentation"),
+ QStringLiteral("-Wno-shadow"),
+ QStringLiteral("-Wno-missing-prototypes"), // Not optimal for C projects.
+ };
+}
+
+QStringList CppCodeModelSettings::extraClangOptions() const
+{
+ return m_extraClangOptions;
+}
+
+void CppCodeModelSettings::setExtraClangOptions(const QStringList &extraClangOptions)
+{
+ m_extraClangOptions = extraClangOptions;
+}
+
void CppCodeModelSettings::setIdForMimeType(const QVariant &var, const QString &mimeType)
{
QHash<QString, QVariant> mimeToId = var.toHash();