From 54d9e8c4df80527b82a525a1852e8d436c4a3873 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 9 Oct 2024 13:12:47 +0200 Subject: [PATCH] CMakePM: Implement "Build Only the Application to Be Run" The "Build Only the Application to Be Run" setting of "Build before deploying" was missing from the CMake project manager. Fixes: QTCREATORBUG-31416 Change-Id: I6caff1f2ec1c9a58c4a90bc949b2df34776482da Reviewed-by: Marcus Tillmanns --- .../cmakebuildconfiguration.cpp | 19 +++++++++++++++++++ .../cmakebuildconfiguration.h | 3 +++ 2 files changed, 22 insertions(+) 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;