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 <marcus.tillmanns@qt.io>
This commit is contained in:
Cristian Adam
2024-10-09 13:12:47 +02:00
parent b2ae34beb0
commit 54d9e8c4df
2 changed files with 22 additions and 0 deletions

View File

@@ -2112,6 +2112,25 @@ void CMakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const
env.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja); env.appendOrSetPath(ninja.isFile() ? ninja.parentDir() : ninja);
} }
void CMakeBuildConfiguration::restrictNextBuild(const ProjectExplorer::RunConfiguration *rc)
{
auto buildStep = qobject_cast<CMakeBuildStep *>(
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 CMakeBuildConfiguration::configureEnvironment() const
{ {
Environment env = configureEnv.environment(); Environment env = configureEnv.environment();

View File

@@ -71,6 +71,8 @@ public:
void addToEnvironment(Utils::Environment &env) const override; void addToEnvironment(Utils::Environment &env) const override;
void restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) override;
Utils::Environment configureEnvironment() const; Utils::Environment configureEnvironment() const;
Internal::CMakeBuildSystem *cmakeBuildSystem() const; Internal::CMakeBuildSystem *cmakeBuildSystem() const;
@@ -103,6 +105,7 @@ private:
void filterConfigArgumentsFromAdditionalCMakeArguments(); void filterConfigArgumentsFromAdditionalCMakeArguments();
Internal::CMakeBuildSystem *m_buildSystem = nullptr; Internal::CMakeBuildSystem *m_buildSystem = nullptr;
QStringList m_unrestrictedBuildTargets;
friend class Internal::CMakeBuildSettingsWidget; friend class Internal::CMakeBuildSettingsWidget;
friend class Internal::CMakeBuildSystem; friend class Internal::CMakeBuildSystem;