CMake: Allow to build target from context menu of CMakeTargetNodes

Change-Id: I0457abd6dabea1699272482eb5f7fbb3ca097310
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2016-11-14 15:18:25 +01:00
committed by Tim Jenssen
parent 6fe3d3bde9
commit 53d45de8a0
8 changed files with 115 additions and 7 deletions

View File

@@ -37,8 +37,10 @@
#include <coreplugin/documentmanager.h>
#include <coreplugin/icore.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/kit.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmacroexpander.h>
#include <projectexplorer/target.h>
@@ -230,6 +232,28 @@ FileName CMakeBuildConfiguration::shadowBuildDirectory(const FileName &projectFi
return FileName::fromUserInput(projectDir.absoluteFilePath(buildPath));
}
void CMakeBuildConfiguration::buildTarget(const QString &buildTarget)
{
const Core::Id buildStep = ProjectExplorer::Constants::BUILDSTEPS_BUILD;
const QString name = ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(buildStep);
CMakeBuildStep *cmBs
= qobject_cast<CMakeBuildStep *>(Utils::findOrDefault(stepList(buildStep)->steps(),
[](const ProjectExplorer::BuildStep *bs) {
return bs->id() == Constants::CMAKE_BUILD_STEP_ID;
}));
QString originalBuildTarget;
if (cmBs) {
originalBuildTarget = cmBs->buildTarget();
cmBs->setBuildTarget(buildTarget);
}
BuildManager::buildList(stepList(buildStep), name);
if (cmBs)
cmBs->setBuildTarget(originalBuildTarget);
}
QList<ConfigModel::DataItem> CMakeBuildConfiguration::completeCMakeConfiguration() const
{
if (!m_buildDirManager || m_buildDirManager->isParsing())