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)