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 <adrozdoff@gmail.com>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alexander Drozdov
2017-06-22 23:11:49 +10:00
parent 7293c01210
commit 1acd9d30dc
2 changed files with 9 additions and 5 deletions

View File

@@ -131,8 +131,10 @@ QString BareMetalRunConfiguration::defaultDisplayName()
QString BareMetalRunConfiguration::localExecutableFilePath() const QString BareMetalRunConfiguration::localExecutableFilePath() const
{ {
const QString targetName = QFileInfo(m_projectFilePath).completeBaseName();
return target()->applicationTargets() return target()->applicationTargets()
.targetForProject(FileName::fromString(m_projectFilePath)).toString(); .targetFilePath(FileName::fromString(targetName).toString()).toString();
} }
QString BareMetalRunConfiguration::arguments() const QString BareMetalRunConfiguration::arguments() const
@@ -158,9 +160,10 @@ QString BareMetalRunConfiguration::projectFilePath() const
QString BareMetalRunConfiguration::buildSystemTarget() const QString BareMetalRunConfiguration::buildSystemTarget() const
{ {
const BuildTargetInfoList targets = target()->applicationTargets(); 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(), 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; return (bst == targets.list.constEnd()) ? QString() : bst->targetName;
} }

View File

@@ -60,8 +60,9 @@ bool BareMetalRunConfigurationFactory::canCreate(Target *parent, Core::Id id) co
{ {
if (!canHandle(parent)) if (!canHandle(parent))
return false; return false;
const QString targetName = QFileInfo(pathFromId(id)).completeBaseName();
return id == BareMetalCustomRunConfiguration::runConfigId() return id == BareMetalCustomRunConfiguration::runConfigId()
|| !parent->applicationTargets().targetForProject(pathFromId(id)).isEmpty(); || !parent->applicationTargets().targetFilePath(targetName).isEmpty();
} }
bool BareMetalRunConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const bool BareMetalRunConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const
@@ -89,7 +90,7 @@ QList<Core::Id> BareMetalRunConfigurationFactory::availableCreationIds(Target *p
const Core::Id base = Core::Id(BareMetalRunConfiguration::IdPrefix); const Core::Id base = Core::Id(BareMetalRunConfiguration::IdPrefix);
foreach (const BuildTargetInfo &bti, parent->applicationTargets().list) 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(); result << BareMetalCustomRunConfiguration::runConfigId();
return result; return result;
} }