diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 911ac7ae2f0..cc2bcbfeb60 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -91,14 +91,8 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl) : } // Set a good default build target: - if (m_buildTarget.isEmpty()) { - if (bsl->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) - setBuildTarget(cleanTarget()); - else if (bsl->id() == ProjectExplorer::Constants::BUILDSTEPS_DEPLOY) - setBuildTarget(installTarget()); - else - setBuildTarget(allTarget()); - } + if (m_buildTarget.isEmpty()) + setBuildTarget(defaultBuildTarget()); connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged); connect(project(), &Project::parsingFinished, @@ -277,6 +271,17 @@ BuildStepConfigWidget *CMakeBuildStep::createConfigWidget() return new CMakeBuildStepConfigWidget(this); } +QString CMakeBuildStep::defaultBuildTarget() const +{ + const ProjectConfiguration *const pc = qobject_cast(parent()); + const Core::Id parentId = pc ? pc->id() : Core::Id(); + if (parentId == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) + return cleanTarget(); + if (parentId == ProjectExplorer::Constants::BUILDSTEPS_DEPLOY) + return installTarget(); + return allTarget(); +} + void CMakeBuildStep::stdOutput(const QString &line) { if (m_percentProgress.indexIn(line) != -1) { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index 9b906f883fa..51f621abc79 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -98,6 +98,8 @@ private: void doRun() override; ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override; + QString defaultBuildTarget() const; + void runImpl(); void handleProjectWasParsed(bool success);