Merge topic 'cmake-W-options'
29127534
cmake: Deduplicate warning message control code67211011
cmake-gui: Add options to control warning messages
This commit is contained in:
commit
05d8aed844
|
@ -10,3 +10,6 @@ cmake-W-options
|
|||
* Warnings about deprecated functionality are now enabled by default.
|
||||
They may be suppressed with ``-Wno-deprecated`` or by setting the
|
||||
:variable:`CMAKE_WARN_DEPRECATED` variable to false.
|
||||
|
||||
* Warnings about deprecated functionality can now be controlled in the
|
||||
:manual:`cmake-gui(1)` application.
|
||||
|
|
|
@ -115,6 +115,8 @@ set(SRCS
|
|||
QCMakeWidgets.h
|
||||
RegexExplorer.cxx
|
||||
RegexExplorer.h
|
||||
WarningMessagesDialog.cxx
|
||||
WarningMessagesDialog.h
|
||||
)
|
||||
QT4_WRAP_UI(UI_SRCS
|
||||
CMakeSetupDialog.ui
|
||||
|
@ -122,6 +124,7 @@ QT4_WRAP_UI(UI_SRCS
|
|||
CrossCompiler.ui
|
||||
AddCacheEntry.ui
|
||||
RegexExplorer.ui
|
||||
WarningMessagesDialog.ui
|
||||
)
|
||||
QT4_WRAP_CPP(MOC_SRCS
|
||||
AddCacheEntry.h
|
||||
|
@ -132,6 +135,7 @@ QT4_WRAP_CPP(MOC_SRCS
|
|||
QCMakeCacheView.h
|
||||
QCMakeWidgets.h
|
||||
RegexExplorer.h
|
||||
WarningMessagesDialog.h
|
||||
)
|
||||
QT4_ADD_RESOURCES(RC_SRCS CMakeSetup.qrc)
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "AddCacheEntry.h"
|
||||
#include "FirstConfigure.h"
|
||||
#include "RegexExplorer.h"
|
||||
#include "WarningMessagesDialog.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmVersion.h"
|
||||
|
||||
|
@ -145,9 +146,8 @@ CMakeSetupDialog::CMakeSetupDialog()
|
|||
this, SLOT(doOutputErrorNext())); // in Eclipse
|
||||
|
||||
QMenu* OptionsMenu = this->menuBar()->addMenu(tr("&Options"));
|
||||
this->SuppressDevWarningsAction =
|
||||
OptionsMenu->addAction(tr("&Suppress dev Warnings (-Wno-dev)"));
|
||||
this->SuppressDevWarningsAction->setCheckable(true);
|
||||
OptionsMenu->addAction(tr("Warning Messages..."),
|
||||
this, SLOT(doWarningMessagesDialog()));
|
||||
this->WarnUninitializedAction =
|
||||
OptionsMenu->addAction(tr("&Warn Uninitialized (--warn-uninitialized)"));
|
||||
this->WarnUninitializedAction->setCheckable(true);
|
||||
|
@ -278,9 +278,6 @@ void CMakeSetupDialog::initialize()
|
|||
QObject::connect(this->AddEntry, SIGNAL(clicked(bool)),
|
||||
this, SLOT(addCacheEntry()));
|
||||
|
||||
QObject::connect(this->SuppressDevWarningsAction, SIGNAL(triggered(bool)),
|
||||
this->CMakeThread->cmakeInstance(), SLOT(setSuppressDevWarnings(bool)));
|
||||
|
||||
QObject::connect(this->WarnUninitializedAction, SIGNAL(triggered(bool)),
|
||||
this->CMakeThread->cmakeInstance(),
|
||||
SLOT(setWarnUninitializedMode(bool)));
|
||||
|
@ -1369,3 +1366,9 @@ void CMakeSetupDialog::doOutputErrorNext()
|
|||
this->Output->setTextCursor(textCursor);
|
||||
}
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::doWarningMessagesDialog()
|
||||
{
|
||||
WarningMessagesDialog dialog(this, this->CMakeThread->cmakeInstance());
|
||||
dialog.exec();
|
||||
}
|
||||
|
|
|
@ -83,6 +83,8 @@ protected slots:
|
|||
void doOutputFindPrev();
|
||||
void doOutputErrorNext();
|
||||
void doRegexExplorerDialog();
|
||||
/// display the modal warning messages dialog window
|
||||
void doWarningMessagesDialog();
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -102,7 +104,6 @@ protected:
|
|||
QAction* ExitAction;
|
||||
QAction* ConfigureAction;
|
||||
QAction* GenerateAction;
|
||||
QAction* SuppressDevWarningsAction;
|
||||
QAction* WarnUninitializedAction;
|
||||
QAction* WarnUnusedAction;
|
||||
QAction* InstallForCommandLineAction;
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
QCMake::QCMake(QObject* p)
|
||||
: QObject(p)
|
||||
{
|
||||
this->SuppressDevWarnings = false;
|
||||
this->WarnUninitializedMode = false;
|
||||
this->WarnUnusedMode = false;
|
||||
qRegisterMetaType<QCMakeProperty>();
|
||||
|
@ -167,7 +166,6 @@ void QCMake::configure()
|
|||
this->CMakeInstance->SetGeneratorPlatform("");
|
||||
this->CMakeInstance->SetGeneratorToolset(this->Toolset.toLocal8Bit().data());
|
||||
this->CMakeInstance->LoadCache();
|
||||
this->CMakeInstance->SetSuppressDevWarnings(this->SuppressDevWarnings);
|
||||
this->CMakeInstance->SetWarnUninitialized(this->WarnUninitializedMode);
|
||||
this->CMakeInstance->SetWarnUnused(this->WarnUnusedMode);
|
||||
this->CMakeInstance->PreLoadCMakeFiles();
|
||||
|
@ -457,10 +455,24 @@ bool QCMake::getDebugOutput() const
|
|||
return this->CMakeInstance->GetDebugOutput();
|
||||
}
|
||||
|
||||
bool QCMake::getSuppressDevWarnings()
|
||||
{
|
||||
return this->CMakeInstance->GetSuppressDevWarnings();
|
||||
}
|
||||
|
||||
void QCMake::setSuppressDevWarnings(bool value)
|
||||
{
|
||||
this->SuppressDevWarnings = value;
|
||||
this->CMakeInstance->SetSuppressDevWarnings(value);
|
||||
}
|
||||
|
||||
bool QCMake::getSuppressDeprecatedWarnings()
|
||||
{
|
||||
return this->CMakeInstance->GetSuppressDeprecatedWarnings();
|
||||
}
|
||||
|
||||
void QCMake::setSuppressDeprecatedWarnings(bool value)
|
||||
{
|
||||
this->CMakeInstance->SetSuppressDeprecatedWarnings(value);
|
||||
}
|
||||
|
||||
void QCMake::setWarnUninitializedMode(bool value)
|
||||
|
|
|
@ -91,8 +91,14 @@ public slots:
|
|||
void reloadCache();
|
||||
/// set whether to do debug output
|
||||
void setDebugOutput(bool);
|
||||
/// get whether to do suppress dev warnings
|
||||
bool getSuppressDevWarnings();
|
||||
/// set whether to do suppress dev warnings
|
||||
void setSuppressDevWarnings(bool value);
|
||||
/// get whether to do suppress deprecated warnings
|
||||
bool getSuppressDeprecatedWarnings();
|
||||
/// set whether to do suppress deprecated warnings
|
||||
void setSuppressDeprecatedWarnings(bool value);
|
||||
/// set whether to run cmake with warnings about uninitialized variables
|
||||
void setWarnUninitializedMode(bool value);
|
||||
/// set whether to run cmake with warnings about unused variables
|
||||
|
@ -146,7 +152,6 @@ protected:
|
|||
bool&, void* cd);
|
||||
static void stdoutCallback(const char* msg, size_t len, void* cd);
|
||||
static void stderrCallback(const char* msg, size_t len, void* cd);
|
||||
bool SuppressDevWarnings;
|
||||
bool WarnUninitializedMode;
|
||||
bool WarnUnusedMode;
|
||||
bool WarnUnusedAllMode;
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
/*============================================================================
|
||||
CMake - Cross Platform Makefile Generator
|
||||
Copyright 2015 Kitware, Inc., Gregor Jasny
|
||||
|
||||
Distributed under the OSI-approved BSD License (the "License");
|
||||
see accompanying file Copyright.txt for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the License for more information.
|
||||
============================================================================*/
|
||||
|
||||
#include "WarningMessagesDialog.h"
|
||||
|
||||
WarningMessagesDialog::WarningMessagesDialog(QWidget* prnt, QCMake* instance)
|
||||
: QDialog(prnt), cmakeInstance(instance)
|
||||
{
|
||||
this->setupUi(this);
|
||||
this->setInitialValues();
|
||||
this->setupSignals();
|
||||
}
|
||||
|
||||
void WarningMessagesDialog::setInitialValues()
|
||||
{
|
||||
this->suppressDeveloperWarnings->setChecked(
|
||||
this->cmakeInstance->getSuppressDevWarnings());
|
||||
this->suppressDeprecatedWarnings->setChecked(
|
||||
this->cmakeInstance->getSuppressDeprecatedWarnings());
|
||||
}
|
||||
|
||||
void WarningMessagesDialog::setupSignals()
|
||||
{
|
||||
QObject::connect(this->buttonBox, SIGNAL(accepted()),
|
||||
this, SLOT(doAccept()));
|
||||
}
|
||||
|
||||
void WarningMessagesDialog::doAccept()
|
||||
{
|
||||
this->cmakeInstance->setSuppressDevWarnings(
|
||||
this->suppressDeveloperWarnings->isChecked());
|
||||
this->cmakeInstance->setSuppressDeprecatedWarnings(
|
||||
this->suppressDeprecatedWarnings->isChecked());
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/*============================================================================
|
||||
CMake - Cross Platform Makefile Generator
|
||||
Copyright 2015 Kitware, Inc., Gregor Jasny
|
||||
|
||||
Distributed under the OSI-approved BSD License (the "License");
|
||||
see accompanying file Copyright.txt for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the License for more information.
|
||||
============================================================================*/
|
||||
|
||||
#ifndef WarningMessagesDialog_h
|
||||
#define WarningMessagesDialog_h
|
||||
|
||||
#include <QDialog>
|
||||
#include <QWidget>
|
||||
|
||||
#include "ui_WarningMessagesDialog.h"
|
||||
#include "QCMake.h"
|
||||
|
||||
/**
|
||||
* Dialog window for setting the warning message related options.
|
||||
*/
|
||||
class WarningMessagesDialog : public QDialog, public Ui_MessagesDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WarningMessagesDialog(QWidget* prnt, QCMake* instance);
|
||||
|
||||
private slots:
|
||||
/**
|
||||
* Handler for the accept event of the ok/cancel button box.
|
||||
*/
|
||||
void doAccept();
|
||||
|
||||
private:
|
||||
QCMake* cmakeInstance;
|
||||
|
||||
/**
|
||||
* Set the initial values of the widgets on this dialog window, using the
|
||||
* current state of the cache.
|
||||
*/
|
||||
void setInitialValues();
|
||||
|
||||
/**
|
||||
* Setup the signals for the widgets on this dialog window.
|
||||
*/
|
||||
void setupSignals();
|
||||
};
|
||||
|
||||
#endif /* MessageDialog_h */
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MessagesDialog</class>
|
||||
<widget class="QDialog" name="MessagesDialog">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>250</width>
|
||||
<height>150</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Warning Messages</string>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Suppress Warnings</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="suppressDeveloperWarnings">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Developer Warnings</string>
|
||||
</property>
|
||||
<property name="tristate">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="suppressDeprecatedWarnings">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Deprecated Warnings</string>
|
||||
</property>
|
||||
<property name="tristate">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>MessagesDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>MessagesDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
|
@ -1269,17 +1269,11 @@ int cmake::Configure()
|
|||
diagLevel = this->DiagLevels["deprecated"];
|
||||
if (diagLevel == DIAG_IGNORE)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "FALSE",
|
||||
"Whether to issue warnings for deprecated "
|
||||
"functionality.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDeprecatedWarnings(true);
|
||||
}
|
||||
else if (diagLevel == DIAG_WARN)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "TRUE",
|
||||
"Whether to issue warnings for deprecated "
|
||||
"functionality.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDeprecatedWarnings(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1299,32 +1293,20 @@ int cmake::Configure()
|
|||
diagLevel = this->DiagLevels["dev"];
|
||||
if (diagLevel == DIAG_IGNORE)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_WARNINGS", "TRUE",
|
||||
"Suppress Warnings that are meant for"
|
||||
" the author of the CMakeLists.txt files.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDevWarnings(true);
|
||||
|
||||
if (setDeprecatedVariables)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "FALSE",
|
||||
"Whether to issue warnings for deprecated "
|
||||
"functionality.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDeprecatedWarnings(true);
|
||||
}
|
||||
}
|
||||
else if (diagLevel == DIAG_WARN)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_WARNINGS", "FALSE",
|
||||
"Suppress Warnings that are meant for"
|
||||
" the author of the CMakeLists.txt files.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDevWarnings(false);
|
||||
|
||||
if (setDeprecatedVariables)
|
||||
{
|
||||
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", "TRUE",
|
||||
"Whether to issue warnings for deprecated "
|
||||
"functionality.",
|
||||
cmState::INTERNAL);
|
||||
this->SetSuppressDeprecatedWarnings(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2881,21 +2863,6 @@ void cmake::RunCheckForUnusedVariables()
|
|||
#endif
|
||||
}
|
||||
|
||||
void cmake::SetSuppressDevWarnings(bool b)
|
||||
{
|
||||
// equivalent to -Wno-dev
|
||||
if (b)
|
||||
{
|
||||
this->DiagLevels["dev"] = DIAG_IGNORE;
|
||||
}
|
||||
// equivalent to -Wdev
|
||||
else
|
||||
{
|
||||
this->DiagLevels["dev"] = std::max(this->DiagLevels["dev"],
|
||||
DIAG_WARN);
|
||||
}
|
||||
}
|
||||
|
||||
bool cmake::GetSuppressDevWarnings(cmMakefile const* mf)
|
||||
{
|
||||
/*
|
||||
|
@ -2914,6 +2881,27 @@ bool cmake::GetSuppressDevWarnings(cmMakefile const* mf)
|
|||
}
|
||||
}
|
||||
|
||||
void cmake::SetSuppressDevWarnings(bool b)
|
||||
{
|
||||
std::string value;
|
||||
|
||||
// equivalent to -Wno-dev
|
||||
if (b)
|
||||
{
|
||||
value = "TRUE";
|
||||
}
|
||||
// equivalent to -Wdev
|
||||
else
|
||||
{
|
||||
value = "FALSE";
|
||||
}
|
||||
|
||||
this->AddCacheEntry("CMAKE_SUPPRESS_DEVELOPER_WARNINGS", value.c_str(),
|
||||
"Suppress Warnings that are meant for"
|
||||
" the author of the CMakeLists.txt files.",
|
||||
cmState::INTERNAL);
|
||||
}
|
||||
|
||||
bool cmake::GetSuppressDeprecatedWarnings(cmMakefile const* mf)
|
||||
{
|
||||
/*
|
||||
|
@ -2932,3 +2920,24 @@ bool cmake::GetSuppressDeprecatedWarnings(cmMakefile const* mf)
|
|||
return cacheEntryValue && cmSystemTools::IsOff(cacheEntryValue);
|
||||
}
|
||||
}
|
||||
|
||||
void cmake::SetSuppressDeprecatedWarnings(bool b)
|
||||
{
|
||||
std::string value;
|
||||
|
||||
// equivalent to -Wno-deprecated
|
||||
if (b)
|
||||
{
|
||||
value = "FALSE";
|
||||
}
|
||||
// equivalent to -Wdeprecated
|
||||
else
|
||||
{
|
||||
value = "TRUE";
|
||||
}
|
||||
|
||||
this->AddCacheEntry("CMAKE_WARN_DEPRECATED", value.c_str(),
|
||||
"Whether to issue warnings for deprecated "
|
||||
"functionality.",
|
||||
cmState::INTERNAL);
|
||||
}
|
||||
|
|
|
@ -308,13 +308,16 @@ class cmake
|
|||
std::string const& GetCMakeEditCommand() const
|
||||
{ return this->CMakeEditCommand; }
|
||||
|
||||
void SetSuppressDevWarnings(bool v);
|
||||
/*
|
||||
* Get the state of the suppression of developer (author) warnings.
|
||||
* Returns false, by default, if developer warnings should be shown, true
|
||||
* otherwise.
|
||||
*/
|
||||
bool GetSuppressDevWarnings(cmMakefile const* mf = NULL);
|
||||
/*
|
||||
* Set the state of the suppression of developer (author) warnings.
|
||||
*/
|
||||
void SetSuppressDevWarnings(bool v);
|
||||
|
||||
/*
|
||||
* Get the state of the suppression of deprecated warnings.
|
||||
|
@ -322,6 +325,10 @@ class cmake
|
|||
* otherwise.
|
||||
*/
|
||||
bool GetSuppressDeprecatedWarnings(cmMakefile const* mf = NULL);
|
||||
/*
|
||||
* Set the state of the suppression of deprecated warnings.
|
||||
*/
|
||||
void SetSuppressDeprecatedWarnings(bool v);
|
||||
|
||||
/** Display a message to the user. */
|
||||
void IssueMessage(cmake::MessageType t, std::string const& text,
|
||||
|
|
Loading…
Reference in New Issue