From 1acd9d30dc68fd2b1690a54e2bdc278dfd46cceb Mon Sep 17 00:00:00 2001 From: Alexander Drozdov Date: Thu, 22 Jun 2017 23:11:49 +1000 Subject: [PATCH] BareMetal: fix Run configuration Run configuration is broken for remote GDB and hardware debuggers: just first target can be handled for project. Task-number: QTCREATORBUG-18434 Change-Id: I3fcff2d906f377dd5a161f74d2c6b21bc5ab943f Reviewed-by: Alexander Drozdov Reviewed-by: hjk --- src/plugins/baremetal/baremetalrunconfiguration.cpp | 9 ++++++--- .../baremetal/baremetalrunconfigurationfactory.cpp | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp index b7fcf1b62ea..26d495f9b67 100644 --- a/src/plugins/baremetal/baremetalrunconfiguration.cpp +++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp @@ -131,8 +131,10 @@ QString BareMetalRunConfiguration::defaultDisplayName() QString BareMetalRunConfiguration::localExecutableFilePath() const { + const QString targetName = QFileInfo(m_projectFilePath).completeBaseName(); + return target()->applicationTargets() - .targetForProject(FileName::fromString(m_projectFilePath)).toString(); + .targetFilePath(FileName::fromString(targetName).toString()).toString(); } QString BareMetalRunConfiguration::arguments() const @@ -158,9 +160,10 @@ QString BareMetalRunConfiguration::projectFilePath() const QString BareMetalRunConfiguration::buildSystemTarget() const { const BuildTargetInfoList targets = target()->applicationTargets(); - const Utils::FileName projectFilePath = Utils::FileName::fromString(m_projectFilePath); + const Utils::FileName projectFilePath = Utils::FileName::fromString(QFileInfo(m_projectFilePath).path()); + const QString targetName = QFileInfo(m_projectFilePath).completeBaseName(); auto bst = std::find_if(targets.list.constBegin(), targets.list.constEnd(), - [&projectFilePath](const BuildTargetInfo &bti) { return bti.projectFilePath == projectFilePath; }); + [&projectFilePath,&targetName](const BuildTargetInfo &bti) { return bti.projectFilePath == projectFilePath && bti.targetName == targetName; }); return (bst == targets.list.constEnd()) ? QString() : bst->targetName; } diff --git a/src/plugins/baremetal/baremetalrunconfigurationfactory.cpp b/src/plugins/baremetal/baremetalrunconfigurationfactory.cpp index 676c3dd8ada..b2381c62e2a 100644 --- a/src/plugins/baremetal/baremetalrunconfigurationfactory.cpp +++ b/src/plugins/baremetal/baremetalrunconfigurationfactory.cpp @@ -60,8 +60,9 @@ bool BareMetalRunConfigurationFactory::canCreate(Target *parent, Core::Id id) co { if (!canHandle(parent)) return false; + const QString targetName = QFileInfo(pathFromId(id)).completeBaseName(); return id == BareMetalCustomRunConfiguration::runConfigId() - || !parent->applicationTargets().targetForProject(pathFromId(id)).isEmpty(); + || !parent->applicationTargets().targetFilePath(targetName).isEmpty(); } bool BareMetalRunConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const @@ -89,7 +90,7 @@ QList BareMetalRunConfigurationFactory::availableCreationIds(Target *p const Core::Id base = Core::Id(BareMetalRunConfiguration::IdPrefix); foreach (const BuildTargetInfo &bti, parent->applicationTargets().list) - result << base.withSuffix(bti.projectFilePath.toString()); + result << base.withSuffix(bti.projectFilePath.toString() + QLatin1Char('/') + bti.targetName); result << BareMetalCustomRunConfiguration::runConfigId(); return result; }