forked from qt-creator/qt-creator
CMake: Add a way to provide options to CMake --build
Add a way to provide options to cmake --build in addition to the already existing option to the build tool (separated by -- from the cmake arguments). I decided to have these two separate to ease upgrading from older Creator versions. Task-number: QTCREATORBUG-24088 Change-Id: If989f9942498055312ba0e11e7d80c2b5ece269d Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -53,6 +53,7 @@ namespace CMakeProjectManager {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
const char BUILD_TARGETS_KEY[] = "CMakeProjectManager.MakeStep.BuildTargets";
|
const char BUILD_TARGETS_KEY[] = "CMakeProjectManager.MakeStep.BuildTargets";
|
||||||
|
const char CMAKE_ARGUMENTS_KEY[] = "CMakeProjectManager.MakeStep.CMakeArguments";
|
||||||
const char TOOL_ARGUMENTS_KEY[] = "CMakeProjectManager.MakeStep.AdditionalArguments";
|
const char TOOL_ARGUMENTS_KEY[] = "CMakeProjectManager.MakeStep.AdditionalArguments";
|
||||||
const char ADD_RUNCONFIGURATION_ARGUMENT_KEY[] = "CMakeProjectManager.MakeStep.AddRunConfigurationArgument";
|
const char ADD_RUNCONFIGURATION_ARGUMENT_KEY[] = "CMakeProjectManager.MakeStep.AddRunConfigurationArgument";
|
||||||
const char ADD_RUNCONFIGURATION_TEXT[] = "Current executable";
|
const char ADD_RUNCONFIGURATION_TEXT[] = "Current executable";
|
||||||
@@ -66,6 +67,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void itemChanged(QListWidgetItem *);
|
void itemChanged(QListWidgetItem *);
|
||||||
|
void cmakeArgumentsEdited();
|
||||||
void toolArgumentsEdited();
|
void toolArgumentsEdited();
|
||||||
void updateDetails();
|
void updateDetails();
|
||||||
void buildTargetsChanged();
|
void buildTargetsChanged();
|
||||||
@@ -74,6 +76,7 @@ private:
|
|||||||
QRadioButton *itemWidget(QListWidgetItem *item);
|
QRadioButton *itemWidget(QListWidgetItem *item);
|
||||||
|
|
||||||
CMakeBuildStep *m_buildStep;
|
CMakeBuildStep *m_buildStep;
|
||||||
|
QLineEdit *m_cmakeArguments;
|
||||||
QLineEdit *m_toolArguments;
|
QLineEdit *m_toolArguments;
|
||||||
QListWidget *m_buildTargetsList;
|
QListWidget *m_buildTargetsList;
|
||||||
};
|
};
|
||||||
@@ -122,6 +125,7 @@ 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_buildTarget));
|
map.insert(BUILD_TARGETS_KEY, QStringList(m_buildTarget));
|
||||||
|
map.insert(CMAKE_ARGUMENTS_KEY, m_cmakeArguments);
|
||||||
map.insert(TOOL_ARGUMENTS_KEY, m_toolArguments);
|
map.insert(TOOL_ARGUMENTS_KEY, m_toolArguments);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
@@ -131,6 +135,7 @@ bool CMakeBuildStep::fromMap(const QVariantMap &map)
|
|||||||
const QStringList targetList = map.value(BUILD_TARGETS_KEY).toStringList();
|
const QStringList targetList = map.value(BUILD_TARGETS_KEY).toStringList();
|
||||||
if (!targetList.isEmpty())
|
if (!targetList.isEmpty())
|
||||||
m_buildTarget = targetList.last();
|
m_buildTarget = targetList.last();
|
||||||
|
m_cmakeArguments = map.value(CMAKE_ARGUMENTS_KEY).toString();
|
||||||
m_toolArguments = map.value(TOOL_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_buildTarget = ADD_RUNCONFIGURATION_TEXT;
|
m_buildTarget = ADD_RUNCONFIGURATION_TEXT;
|
||||||
@@ -327,6 +332,16 @@ void CMakeBuildStep::setBuildTarget(const QString &buildTarget)
|
|||||||
emit targetToBuildChanged();
|
emit targetToBuildChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString CMakeBuildStep::cmakeArguments() const
|
||||||
|
{
|
||||||
|
return m_cmakeArguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMakeBuildStep::setCMakeArguments(const QString &list)
|
||||||
|
{
|
||||||
|
m_cmakeArguments = list;
|
||||||
|
}
|
||||||
|
|
||||||
QString CMakeBuildStep::toolArguments() const
|
QString CMakeBuildStep::toolArguments() const
|
||||||
{
|
{
|
||||||
return m_toolArguments;
|
return m_toolArguments;
|
||||||
@@ -361,6 +376,7 @@ Utils::CommandLine CMakeBuildStep::cmakeCommand(RunConfiguration *rc) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmd.addArgs({"--target", target});
|
cmd.addArgs({"--target", target});
|
||||||
|
cmd.addArgs(m_cmakeArguments, Utils::CommandLine::Raw);
|
||||||
|
|
||||||
if (!m_toolArguments.isEmpty()) {
|
if (!m_toolArguments.isEmpty()) {
|
||||||
cmd.addArg("--");
|
cmd.addArg("--");
|
||||||
@@ -405,11 +421,12 @@ QStringList CMakeBuildStep::specialTargets()
|
|||||||
// CMakeBuildStepConfigWidget
|
// CMakeBuildStepConfigWidget
|
||||||
//
|
//
|
||||||
|
|
||||||
CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep) :
|
CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep)
|
||||||
BuildStepConfigWidget(buildStep),
|
: BuildStepConfigWidget(buildStep)
|
||||||
m_buildStep(buildStep),
|
, m_buildStep(buildStep)
|
||||||
m_toolArguments(new QLineEdit),
|
, m_cmakeArguments(new QLineEdit)
|
||||||
m_buildTargetsList(new QListWidget)
|
, m_toolArguments(new QLineEdit)
|
||||||
|
, m_buildTargetsList(new QListWidget)
|
||||||
{
|
{
|
||||||
setDisplayName(tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name."));
|
setDisplayName(tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name."));
|
||||||
|
|
||||||
@@ -418,6 +435,8 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
|
|||||||
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
|
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
|
||||||
setLayout(fl);
|
setLayout(fl);
|
||||||
|
|
||||||
|
fl->addRow(tr("CMake arguments:"), m_cmakeArguments);
|
||||||
|
m_cmakeArguments->setText(m_buildStep->cmakeArguments());
|
||||||
fl->addRow(tr("Tool arguments:"), m_toolArguments);
|
fl->addRow(tr("Tool arguments:"), m_toolArguments);
|
||||||
m_toolArguments->setText(m_buildStep->toolArguments());
|
m_toolArguments->setText(m_buildStep->toolArguments());
|
||||||
|
|
||||||
@@ -436,6 +455,7 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
|
|||||||
buildTargetsChanged();
|
buildTargetsChanged();
|
||||||
updateDetails();
|
updateDetails();
|
||||||
|
|
||||||
|
connect(m_cmakeArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::cmakeArgumentsEdited);
|
||||||
connect(m_toolArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::toolArgumentsEdited);
|
connect(m_toolArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::toolArgumentsEdited);
|
||||||
connect(m_buildTargetsList, &QListWidget::itemChanged, this, &CMakeBuildStepConfigWidget::itemChanged);
|
connect(m_buildTargetsList, &QListWidget::itemChanged, this, &CMakeBuildStepConfigWidget::itemChanged);
|
||||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
||||||
@@ -457,6 +477,11 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
|
|||||||
&CMakeBuildStepConfigWidget::updateDetails);
|
&CMakeBuildStepConfigWidget::updateDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMakeBuildStepConfigWidget::cmakeArgumentsEdited() {
|
||||||
|
m_buildStep->setCMakeArguments(m_cmakeArguments->text());
|
||||||
|
updateDetails();
|
||||||
|
}
|
||||||
|
|
||||||
void CMakeBuildStepConfigWidget::toolArgumentsEdited()
|
void CMakeBuildStepConfigWidget::toolArgumentsEdited()
|
||||||
{
|
{
|
||||||
m_buildStep->setToolArguments(m_toolArguments->text());
|
m_buildStep->setToolArguments(m_toolArguments->text());
|
||||||
|
@@ -51,6 +51,8 @@ public:
|
|||||||
bool buildsBuildTarget(const QString &target) const;
|
bool buildsBuildTarget(const QString &target) const;
|
||||||
void setBuildTarget(const QString &target);
|
void setBuildTarget(const QString &target);
|
||||||
|
|
||||||
|
QString cmakeArguments() const;
|
||||||
|
void setCMakeArguments(const QString &list);
|
||||||
QString toolArguments() const;
|
QString toolArguments() const;
|
||||||
void setToolArguments(const QString &list);
|
void setToolArguments(const QString &list);
|
||||||
|
|
||||||
@@ -100,6 +102,7 @@ private:
|
|||||||
QRegExp m_ninjaProgress;
|
QRegExp m_ninjaProgress;
|
||||||
QString m_ninjaProgressString;
|
QString m_ninjaProgressString;
|
||||||
QString m_buildTarget;
|
QString m_buildTarget;
|
||||||
|
QString m_cmakeArguments;
|
||||||
QString m_toolArguments;
|
QString m_toolArguments;
|
||||||
bool m_useNinja = false;
|
bool m_useNinja = false;
|
||||||
bool m_waiting = false;
|
bool m_waiting = false;
|
||||||
|
Reference in New Issue
Block a user