From 67c2570d748efdbddf6f052023f725cd8aa3f49d Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 1 Dec 2022 17:32:03 +0100 Subject: [PATCH] ProjectExplorer: Add infastructure for build system specific generators Task-number: QTCREATORBUG-28149 Change-Id: I95c5657db5d551bc5708b755418f27ebfb08a6ee Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- src/plugins/projectexplorer/buildsystem.h | 2 ++ src/plugins/projectexplorer/project.cpp | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index aedf7f79b20..e7292cfd543 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> 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 8a4b2eeb7b1..25cd6493913 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -1067,14 +1067,24 @@ const QList> Project::allGenerators() const QList> 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)