diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 31d0a4bbc8d..282d361626b 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -2112,6 +2112,25 @@ void CMakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const env.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja); } +void CMakeBuildConfiguration::restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) +{ + auto buildStep = qobject_cast( + findOrDefault(buildSteps()->steps(), [](const BuildStep *bs) { + return bs->id() == Constants::CMAKE_BUILD_STEP_ID; + })); + if (!buildStep) + return; + + if (rc) { + m_unrestrictedBuildTargets = buildStep->buildTargets(); + buildStep->setBuildTargets({rc->buildKey()}); + return; + } + + if (!m_unrestrictedBuildTargets.isEmpty()) + buildStep->setBuildTargets(m_unrestrictedBuildTargets); +} + Environment CMakeBuildConfiguration::configureEnvironment() const { Environment env = configureEnv.environment(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 77a84109035..d97a60c1e3f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -71,6 +71,8 @@ public: void addToEnvironment(Utils::Environment &env) const override; + void restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) override; + Utils::Environment configureEnvironment() const; Internal::CMakeBuildSystem *cmakeBuildSystem() const; @@ -103,6 +105,7 @@ private: void filterConfigArgumentsFromAdditionalCMakeArguments(); Internal::CMakeBuildSystem *m_buildSystem = nullptr; + QStringList m_unrestrictedBuildTargets; friend class Internal::CMakeBuildSettingsWidget; friend class Internal::CMakeBuildSystem;