diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 3ee4f753f18..82d0a9b8a58 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -70,6 +70,11 @@ const char ADD_RUNCONFIGURATION_ARGUMENT_KEY[] = "CMakeProjectManager.MakeStep.A const char ADD_RUNCONFIGURATION_TEXT[] = "Current executable"; } +static bool isCurrentExecutableTarget(const QString &target) +{ + return target == QLatin1String(ADD_RUNCONFIGURATION_TEXT); +} + CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl) : AbstractProcessStep(bsl, Core::Id(MS_ID)) { ctor(bsl); @@ -124,9 +129,9 @@ CMakeRunConfiguration *CMakeBuildStep::targetsActiveRunConfiguration() const void CMakeBuildStep::handleBuildTargetChanges() { - if (static_cast(project())->buildTargetTitles().contains(m_buildTarget)) - setBuildTarget(m_buildTarget); - else + if (isCurrentExecutableTarget(m_buildTarget)) + return; // Do not change just because a different set of build targets is there... + if (!static_cast(project())->buildTargetTitles().contains(m_buildTarget)) setBuildTarget(CMakeBuildStep::allTarget()); emit buildTargetsChanged(); } @@ -180,7 +185,7 @@ bool CMakeBuildStep::init(QList &earlierSteps) } CMakeRunConfiguration *rc = targetsActiveRunConfiguration(); - if ((m_buildTarget == QLatin1String(ADD_RUNCONFIGURATION_TEXT)) && (!rc || rc->title().isEmpty())) { + if (isCurrentExecutableTarget(m_buildTarget) && (!rc || rc->title().isEmpty())) { emit addTask(Task(Task::Error, QCoreApplication::translate("ProjectExplorer::Task", "You asked to build the current Run Configuration's build target only, " @@ -336,7 +341,7 @@ QString CMakeBuildStep::allArguments(const CMakeRunConfiguration *rc) const QString target; - if (m_buildTarget == QLatin1String(ADD_RUNCONFIGURATION_TEXT)) { + if (isCurrentExecutableTarget(m_buildTarget)) { if (rc) target = rc->title(); else