CMake: Use "cmake --build" to build

This removes the need to know about ninja and make in the cmakebuildstep.

Change-Id: Id3a15c34f4a8003c3cbf9d62f246bd08f0ada264
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2016-01-07 13:15:29 +01:00
parent 81ffd98433
commit 870cfdf011
2 changed files with 101 additions and 163 deletions

View File

@@ -31,10 +31,12 @@
#include "cmakebuildstep.h" #include "cmakebuildstep.h"
#include "cmakebuildconfiguration.h" #include "cmakebuildconfiguration.h"
#include "cmakekitinformation.h"
#include "cmakeparser.h" #include "cmakeparser.h"
#include "cmakeprojectconstants.h" #include "cmakeprojectconstants.h"
#include "cmakeproject.h" #include "cmakeproject.h"
#include "cmakerunconfiguration.h" #include "cmakerunconfiguration.h"
#include "cmaketool.h"
#include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildsteplist.h>
#include <projectexplorer/deployconfiguration.h> #include <projectexplorer/deployconfiguration.h>
@@ -67,9 +69,8 @@ namespace {
const char MS_ID[] = "CMakeProjectManager.MakeStep"; const char MS_ID[] = "CMakeProjectManager.MakeStep";
const char CLEAN_KEY[] = "CMakeProjectManager.MakeStep.Clean"; // Obsolete since QtC 3.7 const char CLEAN_KEY[] = "CMakeProjectManager.MakeStep.Clean"; // Obsolete since QtC 3.7
const char BUILD_TARGETS_KEY[] = "CMakeProjectManager.MakeStep.BuildTargets"; const char BUILD_TARGETS_KEY[] = "CMakeProjectManager.MakeStep.BuildTargets";
const char ADDITIONAL_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 MAKE_COMMAND_KEY[] = "CMakeProjectManager.MakeStep.MakeCommand";
const char ADD_RUNCONFIGURATION_TEXT[] = "Current executable"; const char ADD_RUNCONFIGURATION_TEXT[] = "Current executable";
} }
@@ -88,9 +89,8 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Core::Id id) :
CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, CMakeBuildStep *bs) : CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, CMakeBuildStep *bs) :
AbstractProcessStep(bsl, bs), AbstractProcessStep(bsl, bs),
m_buildTargets(bs->m_buildTargets), m_buildTargets(bs->m_buildTargets),
m_additionalArguments(bs->m_additionalArguments), m_toolArguments(bs->m_toolArguments),
m_addRunConfigurationArgument(bs->m_addRunConfigurationArgument), m_addRunConfigurationArgument(bs->m_addRunConfigurationArgument)
m_makeCmd(bs->m_makeCmd)
{ {
ctor(); ctor();
} }
@@ -103,18 +103,7 @@ void CMakeBuildStep::ctor()
//: Default display name for the cmake make step. //: Default display name for the cmake make step.
setDefaultDisplayName(tr("Make")); setDefaultDisplayName(tr("Make"));
CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged);
if (bc) {
m_activeConfiguration = 0;
connect(bc, &CMakeBuildConfiguration::useNinjaChanged, this, &CMakeBuildStep::makeCommandChanged);
} else {
// That means the step is in the deploylist, so we listen to the active build config
// changed signal and react to the activeBuildConfigurationChanged() signal of the buildconfiguration
m_activeConfiguration = targetsActiveBuildConfiguration();
connect(target(), &Target::activeBuildConfigurationChanged, this, &CMakeBuildStep::activeBuildConfigurationChanged);
activeBuildConfigurationChanged();
}
connect(static_cast<CMakeProject *>(project()), &CMakeProject::buildTargetsChanged, connect(static_cast<CMakeProject *>(project()), &CMakeProject::buildTargetsChanged,
this, &CMakeBuildStep::buildTargetsChanged); this, &CMakeBuildStep::buildTargetsChanged);
} }
@@ -134,19 +123,6 @@ CMakeRunConfiguration *CMakeBuildStep::targetsActiveRunConfiguration() const
return qobject_cast<CMakeRunConfiguration *>(target()->activeRunConfiguration()); return qobject_cast<CMakeRunConfiguration *>(target()->activeRunConfiguration());
} }
void CMakeBuildStep::activeBuildConfigurationChanged()
{
if (m_activeConfiguration)
disconnect(m_activeConfiguration, &CMakeBuildConfiguration::useNinjaChanged, this, &CMakeBuildStep::makeCommandChanged);
m_activeConfiguration = targetsActiveBuildConfiguration();
if (m_activeConfiguration)
connect(m_activeConfiguration, &CMakeBuildConfiguration::useNinjaChanged, this, &CMakeBuildStep::makeCommandChanged);
emit makeCommandChanged();
}
void CMakeBuildStep::buildTargetsChanged() void CMakeBuildStep::buildTargetsChanged()
{ {
const QStringList filteredTargets const QStringList filteredTargets
@@ -159,9 +135,8 @@ QVariantMap CMakeBuildStep::toMap() const
{ {
QVariantMap map(AbstractProcessStep::toMap()); QVariantMap map(AbstractProcessStep::toMap());
map.insert(QLatin1String(BUILD_TARGETS_KEY), m_buildTargets); map.insert(QLatin1String(BUILD_TARGETS_KEY), m_buildTargets);
map.insert(QLatin1String(ADDITIONAL_ARGUMENTS_KEY), m_additionalArguments); map.insert(QLatin1String(TOOL_ARGUMENTS_KEY), m_toolArguments);
map.insert(QLatin1String(ADD_RUNCONFIGURATION_ARGUMENT_KEY), m_addRunConfigurationArgument); map.insert(QLatin1String(ADD_RUNCONFIGURATION_ARGUMENT_KEY), m_addRunConfigurationArgument);
map.insert(QLatin1String(MAKE_COMMAND_KEY), m_makeCmd);
return map; return map;
} }
@@ -171,10 +146,9 @@ bool CMakeBuildStep::fromMap(const QVariantMap &map)
m_buildTargets = {CMakeBuildStep::cleanTarget()}; m_buildTargets = {CMakeBuildStep::cleanTarget()};
} else { } else {
m_buildTargets = map.value(QLatin1String(BUILD_TARGETS_KEY)).toStringList(); m_buildTargets = map.value(QLatin1String(BUILD_TARGETS_KEY)).toStringList();
m_additionalArguments = map.value(QLatin1String(ADDITIONAL_ARGUMENTS_KEY)).toString(); m_toolArguments = map.value(QLatin1String(TOOL_ARGUMENTS_KEY)).toString();
} }
m_addRunConfigurationArgument = map.value(QLatin1String(ADD_RUNCONFIGURATION_ARGUMENT_KEY), false).toBool(); m_addRunConfigurationArgument = map.value(QLatin1String(ADD_RUNCONFIGURATION_ARGUMENT_KEY), false).toBool();
m_makeCmd = map.value(QLatin1String(MAKE_COMMAND_KEY)).toString();
return BuildStep::fromMap(map); return BuildStep::fromMap(map);
} }
@@ -182,43 +156,44 @@ bool CMakeBuildStep::fromMap(const QVariantMap &map)
bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps) bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps)
{ {
bool canInit = true;
CMakeBuildConfiguration *bc = cmakeBuildConfiguration(); CMakeBuildConfiguration *bc = cmakeBuildConfiguration();
if (!bc) if (!bc)
bc = targetsActiveBuildConfiguration(); bc = targetsActiveBuildConfiguration();
if (!bc) {
if (!bc)
emit addTask(Task::buildConfigurationMissingTask()); emit addTask(Task::buildConfigurationMissingTask());
canInit = false;
}
ToolChain *tc = ToolChainKitInformation::toolChain(target()->kit()); CMakeTool *tool = CMakeKitInformation::cmakeTool(target()->kit());
if (!tc) if (!tool || !tool->isValid()) {
emit addTask(Task::compilerMissingTask()); emit addTask(Task(Task::Error,
QCoreApplication::translate("CMakeProjectManager::CMakeBuildStep",
"Qt Creator needs a cmake tool set up to build. "
"Configure a cmake tool in the kit options."),
Utils::FileName(), -1,
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
canInit = false;
}
if (!bc || !tc) { CMakeRunConfiguration *rc = targetsActiveRunConfiguration();
if (m_addRunConfigurationArgument && (!rc || rc->title().isEmpty())) {
emit addTask(Task(Task::Error,
QCoreApplication::translate("ProjectExplorer::Task",
"You asked to build the current Run Configurations build target only, "
"but the current Run Configuration is not associated with a build target. "
"Please update the Make Step in your build settings."),
Utils::FileName(), -1,
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
canInit = false;
}
if (!canInit) {
emitFaultyConfigurationMessage(); emitFaultyConfigurationMessage();
return false; return false;
} }
m_useNinja = bc->useNinja(); QString arguments = allArguments(rc);
QString arguments;
if (m_addRunConfigurationArgument) {
CMakeRunConfiguration* rc = targetsActiveRunConfiguration();
if (!rc) {
emit addTask(Task(Task::Error,
QCoreApplication::translate("ProjectExplorer::Task",
"You asked to build the current Run Configurations build target only, "
"but the current Run Configuration is not associated with a build target. "
"Please update the Make Step in your build settings."),
Utils::FileName(), -1,
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
emitFaultyConfigurationMessage();
return false;
}
if (!rc->title().isEmpty())
Utils::QtcProcess::addArg(&arguments, rc->title());
}
Utils::QtcProcess::addArgs(&arguments, m_buildTargets);
Utils::QtcProcess::addArgs(&arguments, additionalArguments());
setIgnoreReturnValue(m_buildTargets.contains(CMakeBuildStep::cleanTarget())); setIgnoreReturnValue(m_buildTargets.contains(CMakeBuildStep::cleanTarget()));
@@ -228,11 +203,11 @@ bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps)
// Force output to english for the parsers. Do this here and not in the toolchain's // Force output to english for the parsers. Do this here and not in the toolchain's
// addToEnvironment() to not screw up the users run environment. // addToEnvironment() to not screw up the users run environment.
env.set(QLatin1String("LC_ALL"), QLatin1String("C")); env.set(QLatin1String("LC_ALL"), QLatin1String("C"));
if (m_useNinja && !env.value(QLatin1String("NINJA_STATUS")).startsWith(m_ninjaProgressString)) if (!env.value(QLatin1String("NINJA_STATUS")).startsWith(m_ninjaProgressString))
env.set(QLatin1String("NINJA_STATUS"), m_ninjaProgressString + QLatin1String("%o/sec] ")); env.set(QLatin1String("NINJA_STATUS"), m_ninjaProgressString + QLatin1String("%o/sec] "));
pp->setEnvironment(env); pp->setEnvironment(env);
pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setWorkingDirectory(bc->buildDirectory().toString());
pp->setCommand(makeCommand(tc, bc->environment())); pp->setCommand(cmakeCommand());
pp->setArguments(arguments); pp->setArguments(arguments);
pp->resolveAll(); pp->resolveAll();
@@ -245,11 +220,6 @@ bool CMakeBuildStep::init(QList<const BuildStep *> &earlierSteps)
return AbstractProcessStep::init(earlierSteps); return AbstractProcessStep::init(earlierSteps);
} }
void CMakeBuildStep::run(QFutureInterface<bool> &fi)
{
AbstractProcessStep::run(fi);
}
BuildStepConfigWidget *CMakeBuildStep::createConfigWidget() BuildStepConfigWidget *CMakeBuildStep::createConfigWidget()
{ {
return new CMakeBuildStepConfigWidget(this); return new CMakeBuildStepConfigWidget(this);
@@ -268,6 +238,7 @@ void CMakeBuildStep::stdOutput(const QString &line)
if (ok) if (ok)
futureInterface()->setProgressValue(percent); futureInterface()->setProgressValue(percent);
} else if (m_ninjaProgress.indexIn(line) != -1) { } else if (m_ninjaProgress.indexIn(line) != -1) {
m_useNinja = true;
bool ok = false; bool ok = false;
int done = m_ninjaProgress.cap(1).toInt(&ok); int done = m_ninjaProgress.cap(1).toInt(&ok);
if (ok) { if (ok) {
@@ -324,14 +295,41 @@ void CMakeBuildStep::clearBuildTargets()
m_buildTargets.clear(); m_buildTargets.clear();
} }
QString CMakeBuildStep::additionalArguments() const QString CMakeBuildStep::toolArguments() const
{ {
return m_additionalArguments; return m_toolArguments;
} }
void CMakeBuildStep::setAdditionalArguments(const QString &list) void CMakeBuildStep::setToolArguments(const QString &list)
{ {
m_additionalArguments = list; m_toolArguments = list;
}
QString CMakeBuildStep::allArguments(const CMakeRunConfiguration *rc) const
{
QString arguments;
Utils::QtcProcess::addArg(&arguments, QLatin1String("--build"));
Utils::QtcProcess::addArg(&arguments, QLatin1String("."));
if (m_addRunConfigurationArgument) {
Utils::QtcProcess::addArg(&arguments, QLatin1String("--target"));
if (rc)
Utils::QtcProcess::addArg(&arguments, rc->title());
else
Utils::QtcProcess::addArg(&arguments, QLatin1String("<i>&lt;") + tr(ADD_RUNCONFIGURATION_TEXT) + QLatin1String("&gt;</i>"));
}
foreach (const QString &t, m_buildTargets) {
Utils::QtcProcess::addArg(&arguments, QLatin1String("--target"));
Utils::QtcProcess::addArg(&arguments, t);
}
if (!m_toolArguments.isEmpty()) {
Utils::QtcProcess::addArg(&arguments, QLatin1String("--"));
Utils::QtcProcess::addArg(&arguments, m_toolArguments);
}
return arguments;
} }
bool CMakeBuildStep::addRunConfigurationArgument() const bool CMakeBuildStep::addRunConfigurationArgument() const
@@ -344,30 +342,10 @@ void CMakeBuildStep::setAddRunConfigurationArgument(bool add)
m_addRunConfigurationArgument = add; m_addRunConfigurationArgument = add;
} }
QString CMakeBuildStep::makeCommand(ToolChain *tc, const Utils::Environment &env) const QString CMakeBuildStep::cmakeCommand() const
{ {
if (!m_makeCmd.isEmpty()) CMakeTool *tool = CMakeKitInformation::cmakeTool(target()->kit());
return m_makeCmd; return tool ? tool->cmakeExecutable().toString() : QString();
CMakeBuildConfiguration *bc = cmakeBuildConfiguration();
if (!bc)
bc = targetsActiveBuildConfiguration();
if (bc && bc->useNinja())
return QLatin1String("ninja");
if (tc)
return tc->makeCommand(env);
return QLatin1String("make");
}
void CMakeBuildStep::setUserMakeCommand(const QString &make)
{
m_makeCmd = make;
}
QString CMakeBuildStep::userMakeCommand() const
{
return m_makeCmd;
} }
QString CMakeBuildStep::cleanTarget() QString CMakeBuildStep::cleanTarget()
@@ -387,17 +365,9 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
setLayout(fl); setLayout(fl);
m_makePathChooser = new Utils::PathChooser(this); m_toolArguments = new QLineEdit(this);
m_makePathChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); fl->addRow(tr("Tool arguments:"), m_toolArguments);
m_makePathChooser->setBaseDirectory(Utils::PathChooser::homePath()); m_toolArguments->setText(m_buildStep->toolArguments());
m_makePathChooser->setHistoryCompleter(QLatin1String("PE.MakeCommand.History"));
m_makePathChooser->setPath(m_buildStep->userMakeCommand());
fl->addRow(tr("Override command:"), m_makePathChooser);
m_additionalArguments = new QLineEdit(this);
fl->addRow(tr("Additional arguments:"), m_additionalArguments);
m_additionalArguments->setText(m_buildStep->additionalArguments());
m_buildTargetsList = new QListWidget; m_buildTargetsList = new QListWidget;
m_buildTargetsList->setFrameStyle(QFrame::NoFrame); m_buildTargetsList->setFrameStyle(QFrame::NoFrame);
@@ -430,8 +400,7 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
updateDetails(); updateDetails();
connect(m_makePathChooser, &Utils::PathChooser::rawPathChanged, this, &CMakeBuildStepConfigWidget::makeEdited); connect(m_toolArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::toolArgumentsEdited);
connect(m_additionalArguments, &QLineEdit::textEdited, this, &CMakeBuildStepConfigWidget::additionalArgumentsEdited);
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,
this, &CMakeBuildStepConfigWidget::updateDetails); this, &CMakeBuildStepConfigWidget::updateDetails);
@@ -439,18 +408,11 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep
connect(pro, &CMakeProject::buildTargetsChanged, this, &CMakeBuildStepConfigWidget::buildTargetsChanged); connect(pro, &CMakeProject::buildTargetsChanged, this, &CMakeBuildStepConfigWidget::buildTargetsChanged);
connect(m_buildStep, &CMakeBuildStep::targetsToBuildChanged, this, &CMakeBuildStepConfigWidget::selectedBuildTargetsChanged); connect(m_buildStep, &CMakeBuildStep::targetsToBuildChanged, this, &CMakeBuildStepConfigWidget::selectedBuildTargetsChanged);
connect(pro, &CMakeProject::environmentChanged, this, &CMakeBuildStepConfigWidget::updateDetails); connect(pro, &CMakeProject::environmentChanged, this, &CMakeBuildStepConfigWidget::updateDetails);
connect(m_buildStep, &CMakeBuildStep::makeCommandChanged, this, &CMakeBuildStepConfigWidget::updateDetails);
} }
void CMakeBuildStepConfigWidget::makeEdited() void CMakeBuildStepConfigWidget::toolArgumentsEdited()
{ {
m_buildStep->setUserMakeCommand(m_makePathChooser->rawPath()); m_buildStep->setToolArguments(m_toolArguments->text());
updateDetails();
}
void CMakeBuildStepConfigWidget::additionalArgumentsEdited()
{
m_buildStep->setAdditionalArguments(m_additionalArguments->text());
updateDetails(); updateDetails();
} }
@@ -462,7 +424,7 @@ void CMakeBuildStepConfigWidget::itemChanged(QListWidgetItem *item)
QString CMakeBuildStepConfigWidget::displayName() const QString CMakeBuildStepConfigWidget::displayName() const
{ {
return tr("Make", "CMakeProjectManager::CMakeBuildStepConfigWidget display name."); return tr("Build", "CMakeProjectManager::CMakeBuildStepConfigWidget display name.");
} }
void CMakeBuildStepConfigWidget::buildTargetsChanged() void CMakeBuildStepConfigWidget::buildTargetsChanged()
@@ -498,32 +460,21 @@ void CMakeBuildStepConfigWidget::updateDetails()
{ {
BuildConfiguration *bc = m_buildStep->buildConfiguration(); BuildConfiguration *bc = m_buildStep->buildConfiguration();
if (!bc) if (!bc)
bc = m_buildStep->target()->activeBuildConfiguration(); bc = m_buildStep->targetsActiveBuildConfiguration();
if (!bc) { if (!bc) {
m_summaryText = tr("<b>No build configuration found on this kit.</b>"); m_summaryText = tr("<b>No build configuration found on this kit.</b>");
updateSummary(); updateSummary();
return; return;
} }
ToolChain *tc = ToolChainKitInformation::toolChain(m_buildStep->target()->kit()); ProcessParameters param;
if (tc) { param.setMacroExpander(bc->macroExpander());
QString arguments; param.setEnvironment(bc->environment());
if (m_buildStep->addRunConfigurationArgument()) param.setWorkingDirectory(bc->buildDirectory().toString());
arguments = QLatin1String("<i>&lt;") + tr(ADD_RUNCONFIGURATION_TEXT) + QLatin1String("&gt;</i>"); param.setCommand(m_buildStep->cmakeCommand());
param.setArguments(m_buildStep->allArguments(0));
m_summaryText = param.summary(displayName());
Utils::QtcProcess::addArgs(&arguments, Utils::QtcProcess::joinArgs(m_buildStep->buildTargets()));
Utils::QtcProcess::addArgs(&arguments, m_buildStep->additionalArguments());
ProcessParameters param;
param.setMacroExpander(bc->macroExpander());
param.setEnvironment(bc->environment());
param.setWorkingDirectory(bc->buildDirectory().toString());
param.setCommand(m_buildStep->makeCommand(tc, bc->environment()));
param.setArguments(arguments);
m_summaryText = param.summary(displayName());
} else {
m_summaryText = QLatin1String("<b>") + ToolChainKitInformation::msgNoToolChainInTarget() + QLatin1String("</b>");
}
emit updateSummary(); emit updateSummary();
} }
@@ -537,12 +488,7 @@ QString CMakeBuildStepConfigWidget::summaryText() const
// //
CMakeBuildStepFactory::CMakeBuildStepFactory(QObject *parent) : IBuildStepFactory(parent) CMakeBuildStepFactory::CMakeBuildStepFactory(QObject *parent) : IBuildStepFactory(parent)
{ { }
}
CMakeBuildStepFactory::~CMakeBuildStepFactory()
{
}
bool CMakeBuildStepFactory::canCreate(BuildStepList *parent, Core::Id id) const bool CMakeBuildStepFactory::canCreate(BuildStepList *parent, Core::Id id) const
{ {
@@ -599,12 +545,13 @@ QList<Core::Id> CMakeBuildStepFactory::availableCreationIds(BuildStepList *paren
QString CMakeBuildStepFactory::displayNameForId(Core::Id id) const QString CMakeBuildStepFactory::displayNameForId(Core::Id id) const
{ {
if (id == MS_ID) if (id == MS_ID)
return tr("Make", "Display name for CMakeProjectManager::CMakeBuildStep id."); return tr("Build", "Display name for CMakeProjectManager::CMakeBuildStep id.");
return QString(); return QString();
} }
void CMakeBuildStep::processStarted() void CMakeBuildStep::processStarted()
{ {
m_useNinja = false;
futureInterface()->setProgressRange(0, 100); futureInterface()->setProgressRange(0, 100);
AbstractProcessStep::processStarted(); AbstractProcessStep::processStarted();
} }

View File

@@ -59,11 +59,10 @@ public:
explicit CMakeBuildStep(ProjectExplorer::BuildStepList *bsl); explicit CMakeBuildStep(ProjectExplorer::BuildStepList *bsl);
CMakeBuildConfiguration *cmakeBuildConfiguration() const; CMakeBuildConfiguration *cmakeBuildConfiguration() const;
CMakeBuildConfiguration *targetsActiveBuildConfiguration() const;
bool init(QList<const BuildStep *> &earlierSteps) override; bool init(QList<const BuildStep *> &earlierSteps) override;
void run(QFutureInterface<bool> &fi) override;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override;
bool immutable() const override; bool immutable() const override;
@@ -73,27 +72,25 @@ public:
void setBuildTargets(const QStringList &targets); void setBuildTargets(const QStringList &targets);
void clearBuildTargets(); void clearBuildTargets();
QString additionalArguments() const; QString toolArguments() const;
void setAdditionalArguments(const QString &list); void setToolArguments(const QString &list);
QString allArguments(const CMakeRunConfiguration *rc) const;
bool addRunConfigurationArgument() const; bool addRunConfigurationArgument() const;
void setAddRunConfigurationArgument(bool add); void setAddRunConfigurationArgument(bool add);
QString makeCommand(ProjectExplorer::ToolChain *tc, const Utils::Environment &env) const; QString cmakeCommand() const;
QVariantMap toMap() const override; QVariantMap toMap() const override;
void setUserMakeCommand(const QString &make);
QString userMakeCommand() const;
static QString cleanTarget(); static QString cleanTarget();
private: private:
void activeBuildConfigurationChanged();
void buildTargetsChanged(); void buildTargetsChanged();
signals: signals:
void makeCommandChanged(); void cmakeCommandChanged();
void targetsToBuildChanged(); void targetsToBuildChanged();
protected: protected:
@@ -110,18 +107,15 @@ protected:
private: private:
void ctor(); void ctor();
CMakeBuildConfiguration *targetsActiveBuildConfiguration() const;
CMakeRunConfiguration *targetsActiveRunConfiguration() const; CMakeRunConfiguration *targetsActiveRunConfiguration() const;
QRegExp m_percentProgress; QRegExp m_percentProgress;
QRegExp m_ninjaProgress; QRegExp m_ninjaProgress;
QString m_ninjaProgressString; QString m_ninjaProgressString;
QStringList m_buildTargets; QStringList m_buildTargets;
QString m_additionalArguments; QString m_toolArguments;
bool m_addRunConfigurationArgument; bool m_addRunConfigurationArgument;
bool m_useNinja; bool m_useNinja;
CMakeBuildConfiguration *m_activeConfiguration;
QString m_makeCmd;
}; };
class CMakeBuildStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget class CMakeBuildStepConfigWidget : public ProjectExplorer::BuildStepConfigWidget
@@ -134,17 +128,15 @@ public:
private: private:
void itemChanged(QListWidgetItem*); void itemChanged(QListWidgetItem*);
void makeEdited(); void toolArgumentsEdited();
void additionalArgumentsEdited();
void updateDetails(); void updateDetails();
void buildTargetsChanged(); void buildTargetsChanged();
void selectedBuildTargetsChanged(); void selectedBuildTargetsChanged();
private: private:
CMakeBuildStep *m_buildStep; CMakeBuildStep *m_buildStep;
Utils::PathChooser *m_makePathChooser;
QListWidget *m_buildTargetsList; QListWidget *m_buildTargetsList;
QLineEdit *m_additionalArguments; QLineEdit *m_toolArguments;
QString m_summaryText; QString m_summaryText;
}; };
@@ -154,7 +146,6 @@ class CMakeBuildStepFactory : public ProjectExplorer::IBuildStepFactory
public: public:
explicit CMakeBuildStepFactory(QObject *parent = 0); explicit CMakeBuildStepFactory(QObject *parent = 0);
virtual ~CMakeBuildStepFactory();
bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const; bool canCreate(ProjectExplorer::BuildStepList *parent, Core::Id id) const;
ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id); ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, Core::Id id);