forked from qt-creator/qt-creator
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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user