diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2019-10-07 16:22:59 +0200 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2019-10-09 10:36:24 +0000 |
commit | 3cff6f447af93762fa517ec7d1a7219a368b6d64 (patch) | |
tree | 03386c8cc3c1724b6653901f90daf3ec627740c6 /src/plugins/mcusupport | |
parent | d5fb69c2e6ff13608be62ef9a4d923fb0e976d2c (diff) | |
download | qt-creator-3cff6f447af93762fa517ec7d1a7219a368b6d64.tar.gz |
McuSupport: Make RunConfiguration flash and run the app
For now with flash_*_and_bootloader, and later perhaps with an option to
flash without bootloader and without assets.
Change-Id: I861d8d4f269dcb9b57447217f78825ce232c903e
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'src/plugins/mcusupport')
-rw-r--r-- | src/plugins/mcusupport/mcusupportrunconfiguration.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp index 2e05b9ff50..92dcb4181f 100644 --- a/src/plugins/mcusupport/mcusupportrunconfiguration.cpp +++ b/src/plugins/mcusupport/mcusupportrunconfiguration.cpp @@ -33,6 +33,8 @@ #include <projectexplorer/project.h> #include <projectexplorer/runcontrol.h> #include <projectexplorer/target.h> +#include <cmakeprojectmanager/cmakekitinformation.h> +#include <cmakeprojectmanager/cmaketool.h> using namespace ProjectExplorer; using namespace Utils; @@ -42,9 +44,17 @@ namespace Internal { static CommandLine flashAndRunCommand(Target *target) { - BuildConfiguration *bc = target->activeBuildConfiguration(); + const QString projectName = target->project()->displayName(); - return CommandLine(bc->environment().searchInPath("cmake"), {}); + const CMakeProjectManager::CMakeTool *tool = + CMakeProjectManager::CMakeKitAspect::cmakeTool(target->kit()); + + return CommandLine(tool->filePath(), { + "--build", + ".", + "--target", + QString("flash_%1_and_bootloader").arg(projectName) + }); } class FlashAndRunConfiguration : public ProjectExplorer::RunConfiguration @@ -57,6 +67,17 @@ public: effectiveFlashAndRunCall->setLabelText(tr("Effective flash and run call:")); effectiveFlashAndRunCall->setDisplayStyle(BaseStringAspect::TextEditDisplay); effectiveFlashAndRunCall->setReadOnly(true); + + auto updateConfiguration = [target, effectiveFlashAndRunCall] { + effectiveFlashAndRunCall->setValue(flashAndRunCommand(target).toUserOutput()); + }; + + updateConfiguration(); + + connect(target->activeBuildConfiguration(), &BuildConfiguration::buildDirectoryChanged, + this, updateConfiguration); + connect(target->project(), &Project::displayNameChanged, + this, updateConfiguration); } }; @@ -67,8 +88,11 @@ public: : SimpleTargetRunner(runControl) { setStarter([this, runControl] { - CommandLine cmd = flashAndRunCommand(runControl->target()); + ProjectExplorer::Target *target = runControl->target(); + const CommandLine cmd = flashAndRunCommand(target); Runnable r; + r.workingDirectory = + target->activeBuildConfiguration()->buildDirectory().toUserOutput(); r.setCommandLine(cmd); SimpleTargetRunner::doStart(r, {}); }); |