summaryrefslogtreecommitdiff
path: root/src/plugins/mcusupport
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2019-10-07 16:22:59 +0200
committerAlessandro Portale <alessandro.portale@qt.io>2019-10-09 10:36:24 +0000
commit3cff6f447af93762fa517ec7d1a7219a368b6d64 (patch)
tree03386c8cc3c1724b6653901f90daf3ec627740c6 /src/plugins/mcusupport
parentd5fb69c2e6ff13608be62ef9a4d923fb0e976d2c (diff)
downloadqt-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.cpp30
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, {});
});