From fc25c76a4ff122df6fa7041cfd16f903537df4fa Mon Sep 17 00:00:00 2001 From: Christiaan Janssen Date: Thu, 16 Dec 2021 16:54:19 +0100 Subject: [PATCH] McuSupport: provide RunConfigurations for multiple CMake targets Task-number: QTCREATORBUG-26656 Change-Id: I2177044580f9137a5c530cc0a862d69d389fe447 Reviewed-by: Alessandro Portale --- .../mcusupport/mcusupportrunconfiguration.cpp | 15 +++++++-------- .../mcusupport/mcusupportrunconfiguration.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp index 9369fe589fa..21b3f182689 100644 --- a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp +++ b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp @@ -51,12 +51,11 @@ static FilePath cmakeFilePath(const Target *target) return tool->filePath(); } -static QStringList flashAndRunArgs(const Target *target) +static QStringList flashAndRunArgs(const RunConfiguration *rc, const Target *target) { - const QString projectName = target->project()->displayName(); - - // TODO: Hack! Implement flash target name handling, properly - const QString targetName = "flash_" + projectName; + // Use buildKey if provided, fallback to projectName + const QString targetName = QLatin1String("flash_%1").arg( + !rc->buildKey().isEmpty() ? rc->buildKey() : target->project()->displayName()); return {"--build", ".", "--target", targetName}; } @@ -74,8 +73,8 @@ public: flashAndRunParameters->setDisplayStyle(StringAspect::TextEditDisplay); flashAndRunParameters->setSettingsKey("FlashAndRunConfiguration.Parameters"); - setUpdater([target, flashAndRunParameters] { - flashAndRunParameters->setValue(flashAndRunArgs(target).join(' ')); + setUpdater([target, flashAndRunParameters, this] { + flashAndRunParameters->setValue(flashAndRunArgs(this, target).join(' ')); }); update(); @@ -109,7 +108,7 @@ RunWorkerFactory::WorkerCreator makeFlashAndRunWorker() } McuSupportRunConfigurationFactory::McuSupportRunConfigurationFactory() - : FixedRunConfigurationFactory(FlashAndRunConfiguration::tr("Flash and run")) + : RunConfigurationFactory() { registerRunConfiguration(Constants::RUNCONFIGURATION); addSupportedTargetDeviceType(Constants::DEVICE_TYPE); diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.h b/src/plugins/mcusupport/mcusupportrunconfiguration.h index 3561306457f..528564d7d42 100644 --- a/src/plugins/mcusupport/mcusupportrunconfiguration.h +++ b/src/plugins/mcusupport/mcusupportrunconfiguration.h @@ -31,7 +31,7 @@ namespace McuSupport { namespace Internal { -class McuSupportRunConfigurationFactory final : public ProjectExplorer::FixedRunConfigurationFactory +class McuSupportRunConfigurationFactory final : public ProjectExplorer::RunConfigurationFactory { public: McuSupportRunConfigurationFactory();