diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-12-01 17:32:03 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-12-15 12:21:03 +0000 |
commit | 67c2570d748efdbddf6f052023f725cd8aa3f49d (patch) | |
tree | 9499d48a973b24a9077c01afe7b9441d18ce1a78 | |
parent | ea36472dcec4e3227cc2113439c7d7168d2623e5 (diff) | |
download | qt-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.h | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/project.cpp | 12 |
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) |