forked from qt-creator/qt-creator
CMake: Use StringAspect for cmake arguments
Change-Id: I18e9af5f630a2b0a11a427848368c9f980819717 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -44,8 +44,6 @@
|
|||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
#include <QFormLayout>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
|
|
||||||
@@ -117,15 +115,11 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void itemsChanged();
|
void itemsChanged();
|
||||||
void cmakeArgumentsEdited();
|
|
||||||
void toolArgumentsEdited();
|
|
||||||
void updateDetails();
|
void updateDetails();
|
||||||
void buildTargetsChanged();
|
void buildTargetsChanged();
|
||||||
void updateBuildTargets();
|
void updateBuildTargets();
|
||||||
|
|
||||||
CMakeBuildStep *m_buildStep;
|
CMakeBuildStep *m_buildStep;
|
||||||
QLineEdit *m_cmakeArguments;
|
|
||||||
QLineEdit *m_toolArguments;
|
|
||||||
QListWidget *m_buildTargetsList;
|
QListWidget *m_buildTargetsList;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -140,6 +134,16 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Utils::Id id) :
|
|||||||
//: Default display name for the cmake make step.
|
//: Default display name for the cmake make step.
|
||||||
setDefaultDisplayName(tr("CMake Build"));
|
setDefaultDisplayName(tr("CMake Build"));
|
||||||
|
|
||||||
|
m_cmakeArguments = addAspect<StringAspect>();
|
||||||
|
m_cmakeArguments->setSettingsKey(CMAKE_ARGUMENTS_KEY);
|
||||||
|
m_cmakeArguments->setLabelText(tr("CMake arguments:"));
|
||||||
|
m_cmakeArguments->setDisplayStyle(StringAspect::LineEditDisplay);
|
||||||
|
|
||||||
|
m_toolArguments = addAspect<StringAspect>();
|
||||||
|
m_toolArguments->setSettingsKey(TOOL_ARGUMENTS_KEY);
|
||||||
|
m_toolArguments->setLabelText(tr("Tool arguments:"));
|
||||||
|
m_toolArguments->setDisplayStyle(StringAspect::LineEditDisplay);
|
||||||
|
|
||||||
// Set a good default build target:
|
// Set a good default build target:
|
||||||
if (m_buildTargets.isEmpty())
|
if (m_buildTargets.isEmpty())
|
||||||
setBuildTargets({defaultBuildTarget()});
|
setBuildTargets({defaultBuildTarget()});
|
||||||
@@ -182,16 +186,12 @@ QVariantMap CMakeBuildStep::toMap() const
|
|||||||
QVariantMap map(AbstractProcessStep::toMap());
|
QVariantMap map(AbstractProcessStep::toMap());
|
||||||
// Use QStringList for compatibility with old files
|
// Use QStringList for compatibility with old files
|
||||||
map.insert(BUILD_TARGETS_KEY, QStringList(m_buildTargets));
|
map.insert(BUILD_TARGETS_KEY, QStringList(m_buildTargets));
|
||||||
map.insert(CMAKE_ARGUMENTS_KEY, m_cmakeArguments);
|
|
||||||
map.insert(TOOL_ARGUMENTS_KEY, m_toolArguments);
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CMakeBuildStep::fromMap(const QVariantMap &map)
|
bool CMakeBuildStep::fromMap(const QVariantMap &map)
|
||||||
{
|
{
|
||||||
m_buildTargets = map.value(BUILD_TARGETS_KEY).toStringList();
|
m_buildTargets = map.value(BUILD_TARGETS_KEY).toStringList();
|
||||||
m_cmakeArguments = map.value(CMAKE_ARGUMENTS_KEY).toString();
|
|
||||||
m_toolArguments = map.value(TOOL_ARGUMENTS_KEY).toString();
|
|
||||||
if (map.value(ADD_RUNCONFIGURATION_ARGUMENT_KEY, false).toBool())
|
if (map.value(ADD_RUNCONFIGURATION_ARGUMENT_KEY, false).toBool())
|
||||||
m_buildTargets = QStringList(ADD_RUNCONFIGURATION_TEXT);
|
m_buildTargets = QStringList(ADD_RUNCONFIGURATION_TEXT);
|
||||||
|
|
||||||
@@ -348,26 +348,6 @@ void CMakeBuildStep::setBuildTargets(const QStringList &buildTargets)
|
|||||||
emit targetsToBuildChanged();
|
emit targetsToBuildChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString CMakeBuildStep::cmakeArguments() const
|
|
||||||
{
|
|
||||||
return m_cmakeArguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeBuildStep::setCMakeArguments(const QString &list)
|
|
||||||
{
|
|
||||||
m_cmakeArguments = list;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString CMakeBuildStep::toolArguments() const
|
|
||||||
{
|
|
||||||
return m_toolArguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeBuildStep::setToolArguments(const QString &list)
|
|
||||||
{
|
|
||||||
m_toolArguments = list;
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const
|
Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const
|
||||||
{
|
{
|
||||||
CMakeTool *tool = CMakeKitAspect::cmakeTool(kit());
|
CMakeTool *tool = CMakeKitAspect::cmakeTool(kit());
|
||||||
@@ -392,12 +372,12 @@ Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const
|
|||||||
return target;
|
return target;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (!m_cmakeArguments.isEmpty())
|
if (!m_cmakeArguments->value().isEmpty())
|
||||||
cmd.addArgs(m_cmakeArguments, Utils::CommandLine::Raw);
|
cmd.addArgs(m_cmakeArguments->value(), CommandLine::Raw);
|
||||||
|
|
||||||
if (!m_toolArguments.isEmpty()) {
|
if (!m_toolArguments->value().isEmpty()) {
|
||||||
cmd.addArg("--");
|
cmd.addArg("--");
|
||||||
cmd.addArgs(m_toolArguments, Utils::CommandLine::Raw);
|
cmd.addArgs(m_toolArguments->value(), CommandLine::Raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
@@ -441,21 +421,13 @@ QStringList CMakeBuildStep::specialTargets()
|
|||||||
CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep)
|
CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep)
|
||||||
: BuildStepConfigWidget(buildStep)
|
: BuildStepConfigWidget(buildStep)
|
||||||
, m_buildStep(buildStep)
|
, m_buildStep(buildStep)
|
||||||
, m_cmakeArguments(new QLineEdit)
|
|
||||||
, m_toolArguments(new QLineEdit)
|
|
||||||
, m_buildTargetsList(new QListWidget)
|
, m_buildTargetsList(new QListWidget)
|
||||||
{
|
{
|
||||||
setDisplayName(tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name."));
|
setDisplayName(tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name."));
|
||||||
|
|
||||||
auto fl = new QFormLayout(this);
|
LayoutBuilder builder(this);
|
||||||
fl->setContentsMargins(0, 0, 0, 0);
|
builder.addRow(buildStep->m_cmakeArguments);
|
||||||
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
|
builder.addRow(buildStep->m_toolArguments);
|
||||||
setLayout(fl);
|
|
||||||
|
|
||||||
fl->addRow(tr("CMake arguments:"), m_cmakeArguments);
|
|
||||||
m_cmakeArguments->setText(m_buildStep->cmakeArguments());
|
|
||||||
fl->addRow(tr("Tool arguments:"), m_toolArguments);
|
|
||||||
m_toolArguments->setText(m_buildStep->toolArguments());
|
|
||||||
|
|
||||||
m_buildTargetsList->setFrameStyle(QFrame::NoFrame);
|
m_buildTargetsList->setFrameStyle(QFrame::NoFrame);
|
||||||
m_buildTargetsList->setMinimumHeight(200);
|
m_buildTargetsList->setMinimumHeight(200);
|
||||||
@@ -467,14 +439,18 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
|
|||||||
frameLayout->addWidget(Core::ItemViewFind::createSearchableWrapper(m_buildTargetsList,
|
frameLayout->addWidget(Core::ItemViewFind::createSearchableWrapper(m_buildTargetsList,
|
||||||
Core::ItemViewFind::LightColored));
|
Core::ItemViewFind::LightColored));
|
||||||
|
|
||||||
fl->addRow(tr("Targets:"), frame);
|
builder.startNewRow().addItems(tr("Targets:"), frame);
|
||||||
|
|
||||||
buildTargetsChanged();
|
buildTargetsChanged();
|
||||||
updateDetails();
|
updateDetails();
|
||||||
|
|
||||||
connect(m_cmakeArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::cmakeArgumentsEdited);
|
connect(buildStep->m_cmakeArguments, &StringAspect::changed,
|
||||||
connect(m_toolArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::toolArgumentsEdited);
|
this, &CMakeBuildStepConfigWidget::updateDetails);
|
||||||
connect(m_buildTargetsList, &QListWidget::itemChanged, this, &CMakeBuildStepConfigWidget::itemsChanged);
|
connect(buildStep->m_toolArguments, &StringAspect::changed,
|
||||||
|
this, &CMakeBuildStepConfigWidget::updateDetails);
|
||||||
|
|
||||||
|
connect(m_buildTargetsList, &QListWidget::itemChanged,
|
||||||
|
this, &CMakeBuildStepConfigWidget::itemsChanged);
|
||||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
||||||
this, &CMakeBuildStepConfigWidget::updateDetails);
|
this, &CMakeBuildStepConfigWidget::updateDetails);
|
||||||
|
|
||||||
@@ -494,17 +470,6 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
|
|||||||
&CMakeBuildStepConfigWidget::updateDetails);
|
&CMakeBuildStepConfigWidget::updateDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildStepConfigWidget::cmakeArgumentsEdited() {
|
|
||||||
m_buildStep->setCMakeArguments(m_cmakeArguments->text());
|
|
||||||
updateDetails();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeBuildStepConfigWidget::toolArgumentsEdited()
|
|
||||||
{
|
|
||||||
m_buildStep->setToolArguments(m_toolArguments->text());
|
|
||||||
updateDetails();
|
|
||||||
}
|
|
||||||
|
|
||||||
void CMakeBuildStepConfigWidget::itemsChanged()
|
void CMakeBuildStepConfigWidget::itemsChanged()
|
||||||
{
|
{
|
||||||
const QList<QListWidgetItem *> items = [this]() {
|
const QList<QListWidgetItem *> items = [this]() {
|
||||||
|
|||||||
@@ -31,7 +31,10 @@
|
|||||||
|
|
||||||
namespace Utils { class CommandLine; }
|
namespace Utils { class CommandLine; }
|
||||||
|
|
||||||
namespace ProjectExplorer { class RunConfiguration; }
|
namespace ProjectExplorer {
|
||||||
|
class RunConfiguration;
|
||||||
|
class StringAspect;
|
||||||
|
} // ProjectExplorer
|
||||||
|
|
||||||
namespace CMakeProjectManager {
|
namespace CMakeProjectManager {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -53,11 +56,6 @@ public:
|
|||||||
bool buildsBuildTarget(const QString &target) const;
|
bool buildsBuildTarget(const QString &target) const;
|
||||||
void setBuildTargets(const QStringList &target);
|
void setBuildTargets(const QStringList &target);
|
||||||
|
|
||||||
QString cmakeArguments() const;
|
|
||||||
void setCMakeArguments(const QString &list);
|
|
||||||
QString toolArguments() const;
|
|
||||||
void setToolArguments(const QString &list);
|
|
||||||
|
|
||||||
Utils::CommandLine cmakeCommand(ProjectExplorer::RunConfiguration *rc) const;
|
Utils::CommandLine cmakeCommand(ProjectExplorer::RunConfiguration *rc) const;
|
||||||
|
|
||||||
QStringList knownBuildTargets();
|
QStringList knownBuildTargets();
|
||||||
@@ -96,9 +94,10 @@ private:
|
|||||||
|
|
||||||
QMetaObject::Connection m_runTrigger;
|
QMetaObject::Connection m_runTrigger;
|
||||||
|
|
||||||
|
friend class CMakeBuildStepConfigWidget;
|
||||||
QStringList m_buildTargets;
|
QStringList m_buildTargets;
|
||||||
QString m_cmakeArguments;
|
ProjectExplorer::StringAspect *m_cmakeArguments = nullptr;
|
||||||
QString m_toolArguments;
|
ProjectExplorer::StringAspect *m_toolArguments = nullptr;
|
||||||
bool m_waiting = false;
|
bool m_waiting = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user