From e8b538985d959fe23fab34974a2a000e078bd959 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 22 Apr 2016 15:54:16 +0200 Subject: [PATCH] CMake: Do not forget "current executable" build target Do not forget to build the current executable target when there is a change of available build targets. Task-number: QTCREATORBUG-16131 Change-Id: I7fb0dfcd06cdbe3d23dbd194ed27fd3825068c62 Reviewed-by: Tim Jenssen --- .../cmakeprojectmanager/cmakebuildstep.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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