diff options
author | hjk <hjk@qt.io> | 2018-04-09 12:33:10 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-04-12 12:11:45 +0000 |
commit | bc698d4ce61b95555e1d4ed16cd0d609e7e295e8 (patch) | |
tree | 9ecb48aa27ade853f6d1bae246ce1a01ef903b93 /src/plugins/qbsprojectmanager | |
parent | 4ab7c19e848701b666a720d85bf5b63fa34a2ce6 (diff) | |
download | qt-creator-bc698d4ce61b95555e1d4ed16cd0d609e7e295e8.tar.gz |
ProjectExplorer: Consolidate RunConfiguration identifications
The previously per-Project/RunConfiguration changing meanings of
BuildTargetInfo::buildTarget have by now been split
into separate values in BuildTargetInfo:
- buildKey a handle to one item in Target::applicationTargetList
- displayName a user-visible string in the run settings page
The buildKey was tweaked to coincide with the previous 'extraId',
i.e. the non-RunConfiguration-type part of the project configuration
id that (still) use id mangling.
This allows replacing the cases of locally stored seven different
versions of buildKey(-ish) data by one RunConfiguration::m_buildKey,
and do all remaining extraId handling in RC::{from,to}Map only,
i.e. remove the base ProjectConfiguration::extraId() virtual and
remove the "re-try fromMap with mangled id" hack entirely.
The id mangling is still used to temporarily maintain .user file
compatibility in some cases for now, but should be replaced by
storing the build key and the RunConfiguration type soon. Qbs
already changes in here to only use the uniqueProductName as
buildKey, without the previously added display name which is
stored as part of the ProjectConfiguration already.
It turns out that RunConfiguration::buildSystemTarget was intended
and used to retrieve an item from the Target::applicationTargetList
for some configurations, coinciding with what buildKey does always.
So use that insteand and drop RunConfiguration::buildSystemTarget.
There is clearly is further consolidation potential left.
handling of (default)displayNames is still a per-runconfiguration
mess and there is further consolidation potential left.
Change-Id: I448ed30f1b562fb91b970e328a42fa5f6fb2e43e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.cpp | 9 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 47 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsrunconfiguration.h | 6 |
3 files changed, 15 insertions, 47 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index c028926c28..a64b6040cf 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -94,8 +94,6 @@ static const char CONFIG_SYSTEM_INCLUDEPATHS[] = "systemIncludePaths"; static const char CONFIG_FRAMEWORKPATHS[] = "frameworkPaths"; static const char CONFIG_SYSTEM_FRAMEWORKPATHS[] = "systemFrameworkPaths"; -static QString rcNameSeparator() { return QLatin1String("---Qbs.RC.NameSeparator---"); } - class OpTimer { public: @@ -959,7 +957,7 @@ void QbsProject::updateCppCodeModel() rpp.setDisplayName(grp.name()); rpp.setProjectFileLocation(grp.location().filePath(), grp.location().line(), grp.location().column()); - rpp.setBuildSystemTarget(prd.name()); + rpp.setBuildSystemTarget(uniqueProductName(prd)); rpp.setBuildTargetType(prd.isRunnable() ? CppTools::ProjectPart::Executable : CppTools::ProjectPart::Library); @@ -1126,10 +1124,7 @@ void QbsProject::updateApplicationTargets() } } BuildTargetInfo bti; - bti.targetName = productData.fullDisplayName(); - bti.buildKey = QbsProject::uniqueProductName(productData) - + rcNameSeparator() - + productData.fullDisplayName(); + bti.buildKey = QbsProject::uniqueProductName(productData); bti.targetFilePath = FileName::fromString(targetFile); bti.projectFilePath = FileName::fromString(projectFile); bti.isQtcRunnable = isQtcRunnable; // Fixed up below. diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 5f931d7658..d56911bfbc 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -52,8 +52,6 @@ namespace Internal { const char QBS_RC_PREFIX[] = "Qbs.RunConfiguration:"; -static QString rcNameSeparator() { return QLatin1String("---Qbs.RC.NameSeparator---"); } - static QString usingLibraryPathsKey() { return QString("Qbs.RunConfiguration.UsingLibraryPaths"); } // -------------------------------------------------------------------- @@ -107,15 +105,15 @@ QbsRunConfiguration::QbsRunConfiguration(Target *target) [envAspect]() { envAspect->buildEnvironmentHasChanged(); }); connect(target, &Target::deploymentDataChanged, - this, &QbsRunConfiguration::handleBuildSystemDataUpdated); + this, &QbsRunConfiguration::updateTargetInformation); connect(target, &Target::applicationTargetsChanged, - this, &QbsRunConfiguration::handleBuildSystemDataUpdated); + this, &QbsRunConfiguration::updateTargetInformation); // Handles device changes, etc. connect(target, &Target::kitChanged, - this, &QbsRunConfiguration::handleBuildSystemDataUpdated); + this, &QbsRunConfiguration::updateTargetInformation); connect(target->project(), &Project::parsingFinished, - this, &QbsRunConfiguration::handleBuildSystemDataUpdated); + this, &QbsRunConfiguration::updateTargetInformation); } QVariantMap QbsRunConfiguration::toMap() const @@ -130,23 +128,16 @@ bool QbsRunConfiguration::fromMap(const QVariantMap &map) if (!RunConfiguration::fromMap(map)) return false; - m_buildKey = ProjectExplorer::idFromMap(map).suffixAfter(id()); m_usingLibraryPaths = map.value(usingLibraryPathsKey(), true).toBool(); - setDefaultDisplayName(defaultDisplayName()); - + updateTargetInformation(); return true; } -QString QbsRunConfiguration::extraId() const -{ - return m_buildKey; -} - -void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &rci) +void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &info) { - m_buildKey = rci.buildKey; - setDefaultDisplayName(defaultDisplayName()); + setDefaultDisplayName(info.displayName); + updateTargetInformation(); } QWidget *QbsRunConfiguration::createConfigurationWidget() @@ -173,32 +164,19 @@ void QbsRunConfiguration::setUsingLibraryPaths(bool useLibPaths) void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const { - BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(m_buildKey); + BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(buildKey()); if (bti.runEnvModifier) bti.runEnvModifier(env, m_usingLibraryPaths); } -QString QbsRunConfiguration::buildSystemTarget() const -{ - return m_buildKey; -} - -QString QbsRunConfiguration::defaultDisplayName() -{ - const int sepPos = m_buildKey.indexOf(rcNameSeparator()); - if (sepPos == -1) - return tr("Qbs Run Configuration"); - return m_buildKey.mid(sepPos + rcNameSeparator().size()); -} - Utils::OutputFormatter *QbsRunConfiguration::createOutputFormatter() const { return new QtSupport::QtOutputFormatter(target()->project()); } -void QbsRunConfiguration::handleBuildSystemDataUpdated() +void QbsRunConfiguration::updateTargetInformation() { - BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(m_buildKey); + BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(buildKey()); FileName executable = bti.targetFilePath; auto terminalAspect = extraAspect<TerminalAspect>(); @@ -221,8 +199,7 @@ void QbsRunConfiguration::handleBuildSystemDataUpdated() bool QbsRunConfiguration::canRunForNode(const Node *node) const { if (auto pn = dynamic_cast<const QbsProductNode *>(node)) { - const int sepPos = m_buildKey.indexOf(rcNameSeparator()); - const QString uniqueProductName = m_buildKey.left(sepPos); + const QString uniqueProductName = buildKey(); return uniqueProductName == QbsProject::uniqueProductName(pn->qbsProductData()); } diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h index f1e62f028e..3e2a360da6 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h @@ -51,22 +51,18 @@ public: void addToBaseEnvironment(Utils::Environment &env) const; - QString buildSystemTarget() const final; bool usingLibraryPaths() const { return m_usingLibraryPaths; } void setUsingLibraryPaths(bool useLibPaths); private: QVariantMap toMap() const final; bool fromMap(const QVariantMap &map) final; - QString extraId() const final; void doAdditionalSetup(const ProjectExplorer::RunConfigurationCreationInfo &rci) final; bool canRunForNode(const ProjectExplorer::Node *node) const final; - QString defaultDisplayName(); - void handleBuildSystemDataUpdated(); + void updateTargetInformation(); bool m_usingLibraryPaths = true; - QString m_buildKey; }; class QbsRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory |