From 9481845293a863e6d37af2abad9b3a2fdb9f075d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Tue, 23 Jul 2019 13:05:07 +0200 Subject: [PATCH] CMake: Add helper method to find the default build target for a BuildStep Add a helper method to find the default build target for a CMakeBuildStep based on the BuildStepList the step is part of. Use all/install/clean targets as appropriate. This change has been cherry-picked from master branch: 8b9821440d0c74083476f5b80c7212de71d4013a Change-Id: Idc0c5fae7dfd255039b87ace77c02688cdd76e8f Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/cmakebuildstep.cpp | 21 ++++++++++++------- .../cmakeprojectmanager/cmakebuildstep.h | 2 ++ 2 files changed, 15 insertions(+), 8 deletions(-) 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);