diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index da45772a13d..fdc849ae696 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -528,11 +528,8 @@ void CMakeBuildStepConfigWidget::buildTargetsChanged() addItem(ADD_RUNCONFIGURATION_TEXT, tr(ADD_RUNCONFIGURATION_TEXT), true); - foreach (const QString &buildTarget, CMakeBuildStep::specialTargets()) - addItem(buildTarget, buildTarget, true); - foreach (const QString &buildTarget, targetList) - addItem(buildTarget, buildTarget); + addItem(buildTarget, buildTarget, CMakeBuildStep::specialTargets().contains(buildTarget)); updateBuildTargets(); } diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 5b89209e0ed..48ef90f682a 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -27,11 +27,14 @@ #include "builddirparameters.h" #include "cmakebuildconfiguration.h" +#include "cmakebuildstep.h" +#include "cmakebuildtarget.h" #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" #include "cmakeprojectnodes.h" #include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" +#include "utils/algorithm.h" #include #include @@ -57,6 +60,7 @@ #include #include #include +#include #include #include @@ -621,7 +625,14 @@ void CMakeBuildSystem::handleParsingSucceeded() QString errorMessage; { - m_buildTargets = m_reader.takeBuildTargets(errorMessage); + m_buildTargets = Utils::transform(CMakeBuildStep::specialTargets(), [this](const QString &t) { + CMakeBuildTarget result; + result.title = t; + result.workingDirectory = m_parameters.workDirectory; + result.sourceDirectory = m_parameters.sourceDirectory; + return result; + }); + m_buildTargets += m_reader.takeBuildTargets(errorMessage); checkAndReportError(errorMessage); }