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>
This commit is contained in:
Christian Kandeler
2022-12-01 17:32:03 +01:00
parent ea36472dce
commit 67c2570d74
2 changed files with 13 additions and 1 deletions

View File

@@ -86,6 +86,8 @@ public:
virtual Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const; virtual Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const;
virtual QVariant additionalData(Utils::Id id) 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); void setDeploymentData(const DeploymentData &deploymentData);
DeploymentData deploymentData() const; DeploymentData deploymentData() const;

View File

@@ -1067,14 +1067,24 @@ const QList<QPair<Id, QString>> Project::allGenerators() const
QList<QPair<Id, QString>> generators; QList<QPair<Id, QString>> generators;
for (auto it = d->m_generators.cbegin(); it != d->m_generators.cend(); ++it) for (auto it = d->m_generators.cbegin(); it != d->m_generators.cend(); ++it)
generators << qMakePair(it.key(), it.value().first); 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; return generators;
} }
void Project::runGenerator(Utils::Id id) void Project::runGenerator(Utils::Id id)
{ {
const auto it = d->m_generators.constFind(id); const auto it = d->m_generators.constFind(id);
if (it != d->m_generators.constEnd()) if (it != d->m_generators.constEnd()) {
it.value().second(); it.value().second();
return;
}
if (const Target * const t = activeTarget()) {
if (BuildSystem * const bs = t->buildSystem())
bs->runGenerator(id);
}
} }
#if defined(WITH_TESTS) #if defined(WITH_TESTS)