diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-12-04 17:23:02 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-12-05 14:18:06 +0000 |
commit | 4933f7911114fd37a806be651593a9f54b6e8b53 (patch) | |
tree | 37fe187003919e802f43022a2ffaa0c2c1474cb4 /src/plugins/qbsprojectmanager | |
parent | 24f7c2b8faa497694498c716d27d931e94148277 (diff) |
ProjectExplorer: Provide the option to build only the app to be run
... instead of the entire project.
This can speed up the development cycle by ignoring irrelevant changes
in the project, potentially at the cost of missing parts that actually
should be re-built (in particular with build systems where a product
does not have full knowledge of its dependencies).
Supported by qmake and qbs for now.
Change-Id: Ic7101aa243e92ba139798d13366d256c1919dcc3
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp | 11 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildconfiguration.h | 1 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsnodes.cpp | 7 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsnodes.h | 1 |
4 files changed, 19 insertions, 1 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 1ce47c7043b..4cd7b63f55d 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -191,6 +191,17 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map) return true; } +void QbsBuildConfiguration::restrictNextBuild(const RunConfiguration *rc) +{ + if (!rc) { + setProducts({}); + return; + } + const auto productNode = dynamic_cast<QbsProductNode *>(rc->productNode()); + QTC_ASSERT(productNode, return); + setProducts({productNode->fullDisplayName()}); +} + QbsBuildStep *QbsBuildConfiguration::qbsStep() const { return stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)->firstOfType<QbsBuildStep>(); diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index e34151f058c..c92291a0b38 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -86,6 +86,7 @@ signals: private: bool fromMap(const QVariantMap &map) override; + void restrictNextBuild(const ProjectExplorer::RunConfiguration *rc) override; void triggerReparseIfActive(); QStringList m_changedFiles; diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index b4cea58f800..fc632447e79 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -135,11 +135,16 @@ QStringList QbsProductNode::targetApplications() const return QStringList{m_productData.value("target-executable").toString()}; } -QString QbsProductNode::buildKey() const +QString QbsProductNode::fullDisplayName() const { return m_productData.value("full-display-name").toString(); } +QString QbsProductNode::buildKey() const +{ + return fullDisplayName(); +} + QVariant QbsProductNode::data(Core::Id role) const { if (role == Android::Constants::AndroidDeploySettingsFile) { diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 9c7457ad0ce..51c6a76094b 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -60,6 +60,7 @@ public: void build() override; QStringList targetApplications() const override; + QString fullDisplayName() const; QString buildKey() const override; const QJsonObject productData() const { return m_productData; } |