aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-12-04 17:23:02 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-12-05 14:18:06 +0000
commit4933f7911114fd37a806be651593a9f54b6e8b53 (patch)
tree37fe187003919e802f43022a2ffaa0c2c1474cb4 /src/plugins/qbsprojectmanager
parent24f7c2b8faa497694498c716d27d931e94148277 (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.cpp11
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.h1
-rw-r--r--src/plugins/qbsprojectmanager/qbsnodes.cpp7
-rw-r--r--src/plugins/qbsprojectmanager/qbsnodes.h1
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; }