summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2022-12-01 17:32:03 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2022-12-15 12:21:03 +0000
commit67c2570d748efdbddf6f052023f725cd8aa3f49d (patch)
tree9499d48a973b24a9077c01afe7b9441d18ce1a78
parentea36472dcec4e3227cc2113439c7d7168d2623e5 (diff)
downloadqt-creator-67c2570d748efdbddf6f052023f725cd8aa3f49d.tar.gz
ProjectExplorer: Add infastructure for build system specific generators
Task-number: QTCREATORBUG-28149 Change-Id: I95c5657db5d551bc5708b755418f27ebfb08a6ee Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/plugins/projectexplorer/buildsystem.h2
-rw-r--r--src/plugins/projectexplorer/project.cpp12
2 files changed, 13 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h
index aedf7f79b2..e7292cfd54 100644
--- a/src/plugins/projectexplorer/buildsystem.h
+++ b/src/plugins/projectexplorer/buildsystem.h
@@ -86,6 +86,8 @@ public:
virtual Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const;
virtual QVariant additionalData(Utils::Id id) const;
+ virtual QList<QPair<Utils::Id, QString>> generators() const { return {}; }
+ virtual void runGenerator(Utils::Id) {}
void setDeploymentData(const DeploymentData &deploymentData);
DeploymentData deploymentData() const;
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 8a4b2eeb7b..25cd649391 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -1067,14 +1067,24 @@ const QList<QPair<Id, QString>> Project::allGenerators() const
QList<QPair<Id, QString>> generators;
for (auto it = d->m_generators.cbegin(); it != d->m_generators.cend(); ++it)
generators << qMakePair(it.key(), it.value().first);
+ if (const Target * const t = activeTarget()) {
+ if (const BuildSystem * const bs = t->buildSystem())
+ generators += bs->generators();
+ }
return generators;
}
void Project::runGenerator(Utils::Id id)
{
const auto it = d->m_generators.constFind(id);
- if (it != d->m_generators.constEnd())
+ if (it != d->m_generators.constEnd()) {
it.value().second();
+ return;
+ }
+ if (const Target * const t = activeTarget()) {
+ if (BuildSystem * const bs = t->buildSystem())
+ bs->runGenerator(id);
+ }
}
#if defined(WITH_TESTS)