ProjectExplorer: Settle on fixed set of build step lists

Even if the implementation allowed different lists than 'build'
and 'clean', that's the only set that has been used, ever.

If really needed, this could be re-instated, but for now having
them fixed removes part of the neeed for a two-phase construction
and helps to simplify user code.

Change-Id: I3df09a1829a7d020ef8963d358ea80f8d199ba13
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-12-05 16:19:42 +01:00
parent f0316dbae9
commit 3c41b91d44
19 changed files with 95 additions and 131 deletions

View File

@@ -138,7 +138,7 @@ AndroidBuildApkStep *AndroidBuildApkStep::findInBuild(const BuildConfiguration *
{
if (!bc)
return nullptr;
BuildStepList *bsl = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
BuildStepList *bsl = bc->buildSteps();
QTC_ASSERT(bsl, return nullptr);
return bsl->firstOfType<AndroidBuildApkStep>();
}

View File

@@ -57,27 +57,22 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
void AutotoolsBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
BuildStepList *buildSteps = stepList(BUILDSTEPS_BUILD);
// ### Build Steps Build ###
// autogen.sh or autoreconf
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
if (autogenFile.exists())
buildSteps->appendStep(Constants::AUTOGEN_STEP_ID);
buildSteps()->appendStep(Constants::AUTOGEN_STEP_ID);
else
buildSteps->appendStep(Constants::AUTORECONF_STEP_ID);
buildSteps()->appendStep(Constants::AUTORECONF_STEP_ID);
// ./configure.
buildSteps->appendStep(Constants::CONFIGURE_STEP_ID);
buildSteps()->appendStep(Constants::CONFIGURE_STEP_ID);
// make
buildSteps->appendStep(Constants::MAKE_STEP_ID);
buildSteps()->appendStep(Constants::MAKE_STEP_ID);
// ### Build Steps Clean ###
BuildStepList *cleanSteps = stepList(BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::MAKE_STEP_ID);
cleanSteps()->appendStep(Constants::MAKE_STEP_ID);
}

View File

@@ -99,15 +99,12 @@ CMakeBuildConfiguration::~CMakeBuildConfiguration()
void CMakeBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
buildSteps->appendStep(Constants::CMAKE_BUILD_STEP_ID);
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
if (DeviceTypeKitAspect::deviceTypeId(target()->kit())
== Android::Constants::ANDROID_DEVICE_TYPE) {
buildSteps->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
const auto &bs = buildSteps->steps().constLast();
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
const auto &bs = buildSteps()->steps().constLast();
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NATIVE_API_LEVEL",
CMakeProjectManager::CMakeConfigItem::Type::STRING,
"Android native API level",
@@ -157,8 +154,7 @@ void CMakeBuildConfiguration::initialize()
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_FIND_ROOT_PATH", "%{Qt:QT_INSTALL_PREFIX}"});
}
BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::CMAKE_BUILD_STEP_ID);
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
if (initialBuildDirectory().isEmpty()) {
auto project = target()->project();
@@ -224,9 +220,8 @@ FilePath CMakeBuildConfiguration::shadowBuildDirectory(const FilePath &projectFi
void CMakeBuildConfiguration::buildTarget(const QString &buildTarget)
{
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
auto cmBs = qobject_cast<CMakeBuildStep *>(Utils::findOrDefault(
stepList(buildStep)->steps(),
buildSteps()->steps(),
[](const ProjectExplorer::BuildStep *bs) {
return bs->id() == Constants::CMAKE_BUILD_STEP_ID;
}));
@@ -237,7 +232,7 @@ void CMakeBuildConfiguration::buildTarget(const QString &buildTarget)
cmBs->setBuildTarget(buildTarget);
}
BuildManager::buildList(stepList(buildStep));
BuildManager::buildList(buildSteps());
if (cmBs)
cmBs->setBuildTarget(originalBuildTarget);
@@ -294,7 +289,7 @@ void CMakeBuildConfiguration::setConfigurationForCMake(const QList<ConfigModel::
// We always need to clean when we change the ANDROID_BUILD_ABI_ variables
QList<ProjectExplorer::BuildStepList *> stepLists;
const Core::Id clean = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
stepLists << stepList(clean);
stepLists << cleanSteps();
BuildManager::buildLists(stepLists, QStringList() << ProjectExplorerPlugin::displayNameForStepId(clean));
}
}

View File

@@ -146,8 +146,8 @@ void BuildCMakeTargetLocatorFilter::accept(Core::LocatorFilterEntry selection,
return;
// Find the make step
BuildStepList *buildStepList = cmakeProject->activeTarget()->activeBuildConfiguration()->stepList(
ProjectExplorer::Constants::BUILDSTEPS_BUILD);
BuildStepList *buildStepList =
cmakeProject->activeTarget()->activeBuildConfiguration()->buildSteps();
auto buildStep = buildStepList->firstOfType<CMakeBuildStep>();
if (!buildStep)
return;

View File

@@ -133,8 +133,7 @@ MakeInstallCommand CMakeProject::makeInstallCommand(const Target *target,
{
MakeInstallCommand cmd;
if (const BuildConfiguration * const bc = target->activeBuildConfiguration()) {
if (const auto cmakeStep = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)
->firstOfType<CMakeBuildStep>()) {
if (const auto cmakeStep = bc->buildSteps()->firstOfType<CMakeBuildStep>()) {
if (CMakeTool *tool = CMakeKitAspect::cmakeTool(target->kit()))
cmd.command = tool->cmakeExecutable();
}

View File

@@ -100,6 +100,7 @@ class CompilationDatabaseBuildConfiguration : public ProjectExplorer::BuildConfi
Q_OBJECT
public:
CompilationDatabaseBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
void initialize() final {}
};
class CompilationDatabaseBuildConfigurationFactory

View File

@@ -60,13 +60,8 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
void GenericBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
buildSteps->appendStep(Constants::GENERIC_MS_ID);
BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::GENERIC_MS_ID);
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
updateCacheAndEmitEnvironmentChanged();
}

View File

@@ -65,8 +65,6 @@ BuildConfiguration::BuildType NimbleBuildConfiguration::buildType() const
void NimbleBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
m_buildType = initialBuildType();
setBuildDirectory(project()->projectDirectory());
@@ -78,8 +76,7 @@ void NimbleBuildConfiguration::initialize()
// // Don't add a nimble build step when the package has no binaries (i.e a library package)
// if (!m_nimbleBuildSystem->metadata().bin.empty())
// {
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
buildSteps->appendStep(new NimbleBuildStep(buildSteps));
buildSteps()->appendStep(new NimbleBuildStep(buildSteps()));
// }
}

View File

@@ -75,8 +75,6 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
void NimBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
// Create the build configuration and initialize it from build info
setBuildDirectory(defaultBuildDirectory(target()->kit(),
project()->projectFilePath(),
@@ -85,8 +83,7 @@ void NimBuildConfiguration::initialize()
// Add nim compiler build step
{
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps);
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
switch (initialBuildType()) {
case BuildConfiguration::Release:
@@ -107,14 +104,11 @@ void NimBuildConfiguration::initialize()
if (!nimFiles.isEmpty())
nimCompilerBuildStep->setTargetNimFile(nimFiles.first());
buildSteps->appendStep(nimCompilerBuildStep);
buildSteps()->appendStep(nimCompilerBuildStep);
}
// Add clean step
{
BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
}
cleanSteps()->appendStep(Constants::C_NIMCOMPILERCLEANSTEP_ID);
}
FilePath NimBuildConfiguration::cacheDirectory() const
@@ -131,9 +125,7 @@ FilePath NimBuildConfiguration::outFilePath() const
const NimCompilerBuildStep *NimBuildConfiguration::nimCompilerBuildStep() const
{
BuildStepList *steps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
QTC_ASSERT(steps, return nullptr);
foreach (BuildStep *step, steps->steps())
foreach (BuildStep *step, buildSteps()->steps())
if (step->id() == Constants::C_NIMCOMPILERBUILDSTEP_ID)
return qobject_cast<NimCompilerBuildStep *>(step);
return nullptr;

View File

@@ -69,9 +69,15 @@ namespace Internal {
class BuildConfigurationPrivate
{
public:
BuildConfigurationPrivate(BuildConfiguration *bc)
: m_buildSteps(bc, Constants::BUILDSTEPS_BUILD),
m_cleanSteps(bc, Constants::BUILDSTEPS_CLEAN)
{}
bool m_clearSystemEnvironment = false;
Utils::EnvironmentItems m_userEnvironmentChanges;
QList<BuildStepList *> m_stepLists;
BuildStepList m_buildSteps;
BuildStepList m_cleanSteps;
BuildDirectoryAspect *m_buildDirectoryAspect = nullptr;
Utils::FilePath m_lastEmittedBuildDirectory;
mutable Utils::Environment m_cachedEnvironment;
@@ -88,7 +94,7 @@ public:
} // Internal
BuildConfiguration::BuildConfiguration(Target *target, Core::Id id)
: ProjectConfiguration(target, id), d(new Internal::BuildConfigurationPrivate)
: ProjectConfiguration(target, id), d(new Internal::BuildConfigurationPrivate(this))
{
QTC_CHECK(target && target == this->target());
@@ -167,8 +173,8 @@ void BuildConfiguration::addConfigWidgets(const std::function<void(NamedWidget *
if (NamedWidget *generalConfigWidget = createConfigWidget())
adder(generalConfigWidget);
adder(new Internal::BuildStepListWidget(stepList(Constants::BUILDSTEPS_BUILD)));
adder(new Internal::BuildStepListWidget(stepList(Constants::BUILDSTEPS_CLEAN)));
adder(new Internal::BuildStepListWidget(buildSteps()));
adder(new Internal::BuildStepListWidget(cleanSteps()));
QList<NamedWidget *> subConfigWidgets = createSubConfigWidgets();
foreach (NamedWidget *subConfigWidget, subConfigWidgets)
@@ -203,12 +209,6 @@ NamedWidget *BuildConfiguration::createConfigWidget()
return named;
}
void BuildConfiguration::initialize()
{
d->m_stepLists.append(new BuildStepList(this, Constants::BUILDSTEPS_BUILD));
d->m_stepLists.append(new BuildStepList(this, Constants::BUILDSTEPS_CLEAN));
}
QList<NamedWidget *> BuildConfiguration::createSubConfigWidgets()
{
return {new BuildEnvironmentWidget(this)};
@@ -220,25 +220,26 @@ BuildSystem *BuildConfiguration::buildSystem() const
return target()->fallbackBuildSystem();
}
QList<Core::Id> BuildConfiguration::knownStepLists() const
BuildStepList *BuildConfiguration::buildSteps() const
{
return Utils::transform(d->m_stepLists, &BuildStepList::id);
return &d->m_buildSteps;
}
BuildStepList *BuildConfiguration::stepList(Core::Id id) const
BuildStepList *BuildConfiguration::cleanSteps() const
{
return Utils::findOrDefault(d->m_stepLists, Utils::equal(&BuildStepList::id, id));
return &d->m_cleanSteps;
}
QVariantMap BuildConfiguration::toMap() const
{
QVariantMap map(ProjectConfiguration::toMap());
QVariantMap map = ProjectConfiguration::toMap();
map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), d->m_clearSystemEnvironment);
map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), Utils::EnvironmentItem::toStringList(d->m_userEnvironmentChanges));
map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), d->m_stepLists.count());
for (int i = 0; i < d->m_stepLists.count(); ++i)
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(i), d->m_stepLists.at(i)->toMap());
map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 2);
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(0), d->m_buildSteps.toMap());
map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QString::number(1), d->m_cleanSteps.toMap());
return map;
}
@@ -250,8 +251,8 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
updateCacheAndEmitEnvironmentChanged();
qDeleteAll(d->m_stepLists);
d->m_stepLists.clear();
d->m_buildSteps.clear();
d->m_cleanSteps.clear();
int maxI = map.value(QLatin1String(BUILD_STEP_LIST_COUNT), 0).toInt();
for (int i = 0; i < maxI; ++i) {
@@ -260,19 +261,18 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
qWarning() << "No data for build step list" << i << "found!";
continue;
}
auto list = new BuildStepList(this, idFromMap(data));
if (!list->fromMap(data)) {
qWarning() << "Failed to restore build step list" << i;
delete list;
return false;
Core::Id id = idFromMap(data);
if (id == Constants::BUILDSTEPS_BUILD) {
if (!d->m_buildSteps.fromMap(data))
qWarning() << "Failed to restore build step list";
} else if (id == Constants::BUILDSTEPS_CLEAN) {
if (!d->m_cleanSteps.fromMap(data))
qWarning() << "Failed to restore clean step list";
} else {
qWarning() << "Ignoring unknown step list";
}
d->m_stepLists.append(list);
}
// We currently assume there to be at least a clean and build list!
QTC_CHECK(knownStepLists().contains(Core::Id(Constants::BUILDSTEPS_BUILD)));
QTC_CHECK(knownStepLists().contains(Core::Id(Constants::BUILDSTEPS_CLEAN)));
return ProjectConfiguration::fromMap(map);
}

View File

@@ -77,8 +77,8 @@ public:
virtual void addToEnvironment(Utils::Environment &env) const;
QList<Core::Id> knownStepLists() const;
BuildStepList *stepList(Core::Id id) const;
BuildStepList *buildSteps() const;
BuildStepList *cleanSteps() const;
bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override;
@@ -125,7 +125,7 @@ signals:
void buildTypeChanged();
protected:
virtual void initialize();
virtual void initialize() = 0;
private:
void emitBuildDirectoryChanged();

View File

@@ -896,11 +896,9 @@ MakeInstallCommand Project::makeInstallCommand(const Target *target, const QStri
QTC_ASSERT(hasMakeInstallEquivalent(), return MakeInstallCommand());
MakeInstallCommand cmd;
if (const BuildConfiguration * const bc = target->activeBuildConfiguration()) {
if (const auto makeStep = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)
->firstOfType<MakeStep>()) {
if (const auto makeStep = bc->buildSteps()->firstOfType<MakeStep>())
cmd.command = makeStep->makeExecutable();
}
}
cmd.arguments << "install" << ("INSTALL_ROOT=" + QDir::toNativeSeparators(installRoot));
return cmd;
}

View File

@@ -2670,11 +2670,13 @@ int ProjectExplorerPluginPrivate::queue(QList<Project *> projects, QList<Id> ste
if (!pro || pro->needsConfiguration())
continue;
BuildStepList *bsl = nullptr;
if (id == Constants::BUILDSTEPS_DEPLOY
&& pro->activeTarget()->activeDeployConfiguration())
bsl = pro->activeTarget()->activeDeployConfiguration()->stepList();
else if (pro->activeTarget()->activeBuildConfiguration())
bsl = pro->activeTarget()->activeBuildConfiguration()->stepList(id);
Target *target = pro->activeTarget();
if (id == Constants::BUILDSTEPS_DEPLOY && target->activeDeployConfiguration())
bsl = target->activeDeployConfiguration()->stepList();
else if (id == Constants::BUILDSTEPS_BUILD && target->activeBuildConfiguration())
bsl = target->activeBuildConfiguration()->buildSteps();
else if (id == Constants::BUILDSTEPS_CLEAN && target->activeBuildConfiguration())
bsl = target->activeBuildConfiguration()->cleanSteps();
if (!bsl || bsl->isEmpty())
continue;

View File

@@ -126,8 +126,6 @@ BuildSystem *QbsBuildConfiguration::buildSystem() const
void QbsBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
QVariantMap configData = extraInfo().value<QVariantMap>();
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
(initialBuildType() == BuildConfiguration::Debug)
@@ -159,13 +157,11 @@ void QbsBuildConfiguration::initialize()
m_configurationName->setValue(uniqueConfigName);
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
auto bs = new QbsBuildStep(buildSteps);
auto bs = new QbsBuildStep(buildSteps());
bs->setQbsConfiguration(bd);
buildSteps->appendStep(bs);
buildSteps()->appendStep(bs);
BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::QBS_CLEANSTEP_ID);
cleanSteps()->appendStep(Constants::QBS_CLEANSTEP_ID);
emit qbsConfigurationChanged();
}
@@ -204,7 +200,7 @@ void QbsBuildConfiguration::restrictNextBuild(const RunConfiguration *rc)
QbsBuildStep *QbsBuildConfiguration::qbsStep() const
{
return stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)->firstOfType<QbsBuildStep>();
return buildSteps()->firstOfType<QbsBuildStep>();
}
QVariantMap QbsBuildConfiguration::qbsConfiguration() const

View File

@@ -513,9 +513,7 @@ void QbsProjectManagerPlugin::buildFiles(QbsProject *project, const QStringList
bc->setActiveFileTags(activeFileTags);
bc->setProducts(QStringList());
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
BuildManager::buildList(bc->stepList(buildStep));
BuildManager::buildList(bc->buildSteps());
bc->setChangedFiles(QStringList());
bc->setActiveFileTags(QStringList());
@@ -549,8 +547,13 @@ void QbsProjectManagerPlugin::runStepsForProducts(QbsProject *project,
QList<ProjectExplorer::BuildStepList *> stepLists;
QStringList stepListNames;
for (const Core::Id &stepType : stepTypes) {
stepLists << bc->stepList(stepType);
if (stepType == ProjectExplorer::Constants::BUILDSTEPS_BUILD) {
stepLists << bc->buildSteps();
stepListNames << ProjectExplorerPlugin::displayNameForStepId(stepType);
} else if (stepType == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) {
stepLists << bc->cleanSteps();
stepListNames << ProjectExplorerPlugin::displayNameForStepId(stepType);
}
}
BuildManager::buildLists(stepLists, stepListNames);
bc->setProducts(QStringList());

View File

@@ -155,15 +155,11 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
void QmakeBuildConfiguration::initialize()
{
BuildConfiguration::initialize();
auto qmakeStep = new QMakeStep(buildSteps());
buildSteps()->appendStep(qmakeStep);
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
auto qmakeStep = new QMakeStep(buildSteps);
buildSteps->appendStep(qmakeStep);
buildSteps->appendStep(Constants::MAKESTEP_BS_ID);
BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
cleanSteps->appendStep(Constants::MAKESTEP_BS_ID);
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
BaseQtVersion *version = QtKitAspect::qtVersion(target()->kit());
@@ -195,8 +191,8 @@ void QmakeBuildConfiguration::initialize()
if (DeviceTypeKitAspect::deviceTypeId(target()->kit())
== Android::Constants::ANDROID_DEVICE_TYPE) {
buildSteps->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
buildSteps->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
}
updateCacheAndEmitEnvironmentChanged();
@@ -469,8 +465,7 @@ QStringList QmakeBuildConfiguration::configCommandLineArguments() const
QMakeStep *QmakeBuildConfiguration::qmakeStep() const
{
QMakeStep *qs = nullptr;
BuildStepList *bsl = stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD));
Q_ASSERT(bsl);
BuildStepList *bsl = buildSteps();
for (int i = 0; i < bsl->count(); ++i)
if ((qs = qobject_cast<QMakeStep *>(bsl->at(i))) != nullptr)
return qs;
@@ -480,8 +475,7 @@ QMakeStep *QmakeBuildConfiguration::qmakeStep() const
QmakeMakeStep *QmakeBuildConfiguration::makeStep() const
{
QmakeMakeStep *ms = nullptr;
BuildStepList *bsl = stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD));
Q_ASSERT(bsl);
BuildStepList *bsl = buildSteps();
for (int i = 0; i < bsl->count(); ++i)
if ((ms = qobject_cast<QmakeMakeStep *>(bsl->at(i))) != nullptr)
return ms;
@@ -863,7 +857,7 @@ bool QmakeBuildConfiguration::regenerateBuildFiles(Node *node)
qs->setForced(true);
BuildManager::buildList(stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
BuildManager::buildList(cleanSteps());
BuildManager::appendStep(qs, ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
QmakeProFileNode *proFile = nullptr;

View File

@@ -237,17 +237,15 @@ void QmakeManager::handleSubDirContextMenu(QmakeManager::Action action, bool isF
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
const Core::Id cleanStep = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
if (action == BUILD) {
BuildManager::buildList(bc->stepList(buildStep));
BuildManager::buildList(bc->buildSteps());
} else if (action == CLEAN) {
BuildManager::buildList(bc->stepList(cleanStep));
BuildManager::buildList(bc->cleanSteps());
} else if (action == REBUILD) {
QStringList names;
names << ProjectExplorerPlugin::displayNameForStepId(cleanStep)
<< ProjectExplorerPlugin::displayNameForStepId(buildStep);
QList<ProjectExplorer::BuildStepList *> stepLists;
stepLists << bc->stepList(cleanStep) << bc->stepList(buildStep);
BuildManager::buildLists(stepLists, names);
BuildManager::buildLists({bc->cleanSteps(), bc->buildSteps()}, names);
}
}

View File

@@ -575,7 +575,7 @@ QMakeStepConfigWidget::QMakeStepConfigWidget(QMakeStep *step)
QList<ProjectExplorer::BuildStepList *> stepLists;
const Core::Id clean = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
stepLists << bc->stepList(clean);
stepLists << bc->cleanSteps();
BuildManager::buildLists(stepLists, {ProjectExplorerPlugin::displayNameForStepId(clean)});
});
auto chooser = new Core::VariableChooser(qmakeAdditonalArgumentsLineEdit);
@@ -758,11 +758,10 @@ void QMakeStepConfigWidget::recompileMessageBoxFinished(int button)
if (!bc)
return;
QList<ProjectExplorer::BuildStepList *> stepLists;
const Core::Id clean = ProjectExplorer::Constants::BUILDSTEPS_CLEAN;
const Core::Id build = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
stepLists << bc->stepList(clean) << bc->stepList(build);
BuildManager::buildLists(stepLists, QStringList() << ProjectExplorerPlugin::displayNameForStepId(clean)
BuildManager::buildLists({bc->cleanSteps(), bc->buildSteps()},
QStringList() << ProjectExplorerPlugin::displayNameForStepId(clean)
<< ProjectExplorerPlugin::displayNameForStepId(build));
}
}

View File

@@ -148,12 +148,12 @@ bool MakeInstallStep::init()
processParameters()->setEnvironment(env);
}
m_noInstallTarget = false;
const auto buildStep = buildConfiguration()
->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)
->firstOfType<AbstractProcessStep>();
const auto buildStep = buildConfiguration()->buildSteps()->firstOfType<AbstractProcessStep>();
m_isCmakeProject = buildStep
&& buildStep->processParameters()->command().executable().toString()
.contains("cmake");
return true;
}