diff options
26 files changed, 114 insertions, 143 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index f2b069d6d1..56d22a52ed 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -80,12 +80,11 @@ AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory() setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID); setSupportedProjectMimeTypeName(Constants::MAKEFILE_MIMETYPE); - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { - BuildInfo info(this); + setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) { + BuildInfo info; info.typeName = BuildConfiguration::tr("Build"); info.buildDirectory = forSetup ? FilePath::fromString(projectPath.toFileInfo().absolutePath()) : projectPath; - info.kitId = k->id(); if (forSetup) { //: The name of the build configuration created by default for a autotools project. info.displayName = BuildConfiguration::tr("Default"); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 8f5565f908..4a03f2167e 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -409,13 +409,13 @@ CMakeBuildConfigurationFactory::CMakeBuildConfigurationFactory() setSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID); setSupportedProjectMimeTypeName(Constants::CMAKEPROJECTMIMETYPE); - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { + setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) { QList<BuildInfo> result; FilePath path = forSetup ? Project::projectDirectory(projectPath) : projectPath; for (int type = BuildTypeDebug; type != BuildTypeLast; ++type) { - BuildInfo info = createBuildInfo(k, path.toString(), BuildType(type)); + BuildInfo info = createBuildInfo(BuildType(type)); if (forSetup) { info.buildDirectory = CMakeBuildConfiguration::shadowBuildDirectory(projectPath, k, @@ -457,12 +457,9 @@ BuildConfiguration::BuildType CMakeBuildConfigurationFactory::cmakeBuildTypeToBu return BuildConfiguration::Unknown; } -BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k, - const QString &, - BuildType buildType) const +BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(BuildType buildType) { - BuildInfo info(this); - info.kitId = k->id(); + BuildInfo info; switch (buildType) { case BuildTypeNone: diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index a495d135e4..ad9bcfb6cb 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -124,9 +124,7 @@ public: static ProjectExplorer::BuildConfiguration::BuildType cmakeBuildTypeToBuildType(const BuildType &in); private: - ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k, - const QString &sourceDir, - BuildType buildType) const; + static ProjectExplorer::BuildInfo createBuildInfo(BuildType buildType); friend class CMakeProjectImporter; }; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 1cda2387f4..65ded4e4b6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -335,17 +335,13 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const }); } -const QList<BuildInfo> CMakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const +const QList<BuildInfo> CMakeProjectImporter::buildInfoList(void *directoryData) const { auto data = static_cast<const DirectoryData *>(directoryData); - auto factory = dynamic_cast<CMakeBuildConfigurationFactory *>( - BuildConfigurationFactory::find(k, projectFilePath())); - if (!factory) - return {}; // create info: - BuildInfo info = factory->createBuildInfo(k, projectDirectory().toString(), - CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType)); + BuildInfo info = CMakeBuildConfigurationFactory::createBuildInfo( + CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType)); info.buildDirectory = data->buildDirectory; info.displayName = info.typeName; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h index 9940da3723..fa1f4e4df7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h @@ -44,8 +44,7 @@ private: QList<void *> examineDirectory(const Utils::FilePath &importPath) const final; bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final; ProjectExplorer::Kit *createKit(void *directoryData) const final; - const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k, - void *directoryData) const final; + const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final; struct CMakeToolData { bool isTemporary = false; diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index a5629ce2a1..41bd6c4c24 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -539,14 +539,13 @@ CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurat setSupportedProjectType(Constants::COMPILATIONDATABASEPROJECT_ID); setSupportedProjectMimeTypeName(Constants::COMPILATIONDATABASEMIMETYPE); - setBuildGenerator([this](const Kit *kit, const FilePath &projectPath, bool) { + setBuildGenerator([](const Kit *, const FilePath &projectPath, bool) { const QString name = BuildConfiguration::tr("Release"); - ProjectExplorer::BuildInfo info(this); + ProjectExplorer::BuildInfo info; info.typeName = name; info.displayName = name; info.buildType = BuildConfiguration::Release; info.buildDirectory = projectPath.parentDir(); - info.kitId = kit->id(); return QList<BuildInfo>{info}; }); } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index cab18f9082..f241a3d317 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -75,11 +75,10 @@ GenericBuildConfigurationFactory::GenericBuildConfigurationFactory() setSupportedProjectType(Constants::GENERICPROJECT_ID); setSupportedProjectMimeTypeName(Constants::GENERICMIMETYPE); - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { - BuildInfo info(this); + setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) { + BuildInfo info; info.typeName = BuildConfiguration::tr("Build"); info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath; - info.kitId = k->id(); if (forSetup) { //: The name of the build configuration created by default for a generic project. diff --git a/src/plugins/nim/project/nimblebuildconfiguration.cpp b/src/plugins/nim/project/nimblebuildconfiguration.cpp index 336545c201..10ef13bbce 100644 --- a/src/plugins/nim/project/nimblebuildconfiguration.cpp +++ b/src/plugins/nim/project/nimblebuildconfiguration.cpp @@ -86,11 +86,10 @@ NimbleBuildConfigurationFactory::NimbleBuildConfigurationFactory() setSupportedProjectType(Constants::C_NIMBLEPROJECT_ID); setSupportedProjectMimeTypeName(Constants::C_NIMBLE_MIMETYPE); - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { + setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) { const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) { - BuildInfo info(this); + BuildInfo info; info.buildType = buildType; - info.kitId = k->id(); info.typeName = typeName; if (forSetup) { info.displayName = info.typeName; diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp index 29eeb31d1e..ea249956cf 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.cpp +++ b/src/plugins/nim/project/nimbuildconfiguration.cpp @@ -135,11 +135,10 @@ NimBuildConfigurationFactory::NimBuildConfigurationFactory() setSupportedProjectType(Constants::C_NIMPROJECT_ID); setSupportedProjectMimeTypeName(Constants::C_NIM_PROJECT_MIMETYPE); - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { + setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) { const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) { - BuildInfo info(this); + BuildInfo info; info.buildType = buildType; - info.kitId = k->id(); info.typeName = typeName; if (forSetup) { info.displayName = info.typeName; diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 35f2e908c4..a6262cf69d 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -509,14 +509,24 @@ const Tasks BuildConfigurationFactory::reportIssues(ProjectExplorer::Kit *kit, c const QList<BuildInfo> BuildConfigurationFactory::allAvailableBuilds(const Target *parent) const { QTC_ASSERT(m_buildGenerator, return {}); - return m_buildGenerator(parent->kit(), parent->project()->projectFilePath(), false); + QList<BuildInfo> list = m_buildGenerator(parent->kit(), parent->project()->projectFilePath(), false); + for (BuildInfo &info : list) { + info.factory = this; + info.kitId = parent->kit()->id(); + } + return list; } const QList<BuildInfo> BuildConfigurationFactory::allAvailableSetups(const Kit *k, const FilePath &projectPath) const { QTC_ASSERT(m_buildGenerator, return {}); - return m_buildGenerator(k, projectPath, /* forSetup = */ true); + QList<BuildInfo> list = m_buildGenerator(k, projectPath, /* forSetup = */ true); + for (BuildInfo &info : list) { + info.factory = this; + info.kitId = k->id(); + } + return list; } bool BuildConfigurationFactory::supportsTargetDeviceType(Core::Id id) const diff --git a/src/plugins/projectexplorer/buildinfo.h b/src/plugins/projectexplorer/buildinfo.h index 41dfd78180..e54285af35 100644 --- a/src/plugins/projectexplorer/buildinfo.h +++ b/src/plugins/projectexplorer/buildinfo.h @@ -28,7 +28,6 @@ #include "projectexplorer_export.h" #include "buildconfiguration.h" -#include "task.h" #include <coreplugin/id.h> #include <utils/fileutils.h> @@ -40,9 +39,7 @@ class BuildConfigurationFactory; class PROJECTEXPLORER_EXPORT BuildInfo final { public: - BuildInfo(const BuildConfigurationFactory *f = nullptr) : m_factory(f) { } - - const BuildConfigurationFactory *factory() const { return m_factory; } + BuildInfo() = default; QString displayName; QString typeName; @@ -51,11 +48,11 @@ public: BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown; QVariant extraInfo; - const BuildConfigurationFactory *m_factory = nullptr; + const BuildConfigurationFactory *factory = nullptr; bool operator==(const BuildInfo &o) const { - return m_factory == o.m_factory + return factory == o.factory && displayName == o.displayName && typeName == o.typeName && buildDirectory == o.buildDirectory && kitId == o.kitId && buildType == o.buildType; diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index f5d33a7b4e..924adfa678 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -231,7 +231,7 @@ void BuildSettingsWidget::createConfiguration(const BuildInfo &info_) return; } - BuildConfiguration *bc = info.factory()->create(m_target, info); + BuildConfiguration *bc = info.factory->create(m_target, info); if (!bc) return; diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index e5fd5e9f4a..99afeb3df0 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -932,10 +932,10 @@ void Project::setup(const QList<BuildInfo> &infoList) toRegister.emplace_back(std::move(newTarget)); } - if (!info.factory()) + if (!info.factory) continue; - if (BuildConfiguration *bc = info.factory()->create(t, info)) + if (BuildConfiguration *bc = info.factory->create(t, info)) t->addBuildConfiguration(bc); } for (std::unique_ptr<Target> &t : toRegister) { diff --git a/src/plugins/projectexplorer/projectimporter.cpp b/src/plugins/projectexplorer/projectimporter.cpp index 1a2dbbfcad..d420758599 100644 --- a/src/plugins/projectexplorer/projectimporter.cpp +++ b/src/plugins/projectexplorer/projectimporter.cpp @@ -132,13 +132,16 @@ const QList<BuildInfo> ProjectImporter::import(const Utils::FilePath &importPath foreach (Kit *k, kitList) { qCDebug(log) << "Creating buildinfos for kit" << k->displayName(); - const QList<BuildInfo> infoList = buildInfoListForKit(k, data); + const QList<BuildInfo> infoList = buildInfoList(data); if (infoList.isEmpty()) { qCDebug(log) << "No build infos for kit" << k->displayName(); continue; } - for (const BuildInfo &i : infoList) { + auto factory = BuildConfigurationFactory::find(k, projectFilePath()); + for (BuildInfo i : infoList) { + i.kitId = k->id(); + i.factory = factory; if (!result.contains(i)) result += i; } diff --git a/src/plugins/projectexplorer/projectimporter.h b/src/plugins/projectexplorer/projectimporter.h index 20a2700683..62851c95b4 100644 --- a/src/plugins/projectexplorer/projectimporter.h +++ b/src/plugins/projectexplorer/projectimporter.h @@ -92,7 +92,7 @@ protected: // will get one of the results from examineDirectory virtual Kit *createKit(void *directoryData) const = 0; // will get one of the results from examineDirectory - virtual const QList<BuildInfo> buildInfoListForKit(const Kit *k, void *directoryData) const = 0; + virtual const QList<BuildInfo> buildInfoList(void *directoryData) const = 0; virtual void deleteDirectoryData(void *directoryData) const = 0; diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 3314b78dde..f358200c5d 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -583,7 +583,7 @@ public: target = project->addTargetForKit(KitManager::kit(info.kitId)); if (target) { projectImporter->makePersistent(target->kit()); - BuildConfiguration *bc = info.factory()->create(target, info); + BuildConfiguration *bc = info.factory->create(target, info); QTC_ASSERT(bc, continue); target->addBuildConfiguration(bc); diff --git a/src/plugins/projectexplorer/targetsetupwidget.cpp b/src/plugins/projectexplorer/targetsetupwidget.cpp index ddcda6d8ff..31b3f5d6af 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.cpp +++ b/src/plugins/projectexplorer/targetsetupwidget.cpp @@ -151,7 +151,7 @@ void TargetSetupWidget::addBuildInfo(const BuildInfo &info, bool isImport) store.isEnabled = true; ++m_selected; - if (info.factory()) { + if (info.factory) { store.checkbox = new QCheckBox; store.checkbox->setText(info.displayName); store.checkbox->setChecked(store.isEnabled); @@ -250,7 +250,7 @@ const QList<BuildInfo> TargetSetupWidget::buildInfoList(const Kit *k, const File if (auto factory = BuildConfigurationFactory::find(k, projectPath)) return factory->allAvailableSetups(k, projectPath); - BuildInfo info(nullptr); + BuildInfo info; info.kitId = k->id(); return {info}; } @@ -294,7 +294,7 @@ void TargetSetupWidget::clear() void TargetSetupWidget::updateDefaultBuildDirectories() { for (const BuildInfo &buildInfo : buildInfoList(m_kit, m_projectPath)) { - if (!buildInfo.factory()) + if (!buildInfo.factory) continue; bool found = false; for (BuildInfoStore &buildInfoStore : m_infoStore) { @@ -364,13 +364,13 @@ void TargetSetupWidget::reportIssues(int index) QPair<Task::TaskType, QString> TargetSetupWidget::findIssues(const BuildInfo &info) { - if (m_projectPath.isEmpty() || !info.factory()) + if (m_projectPath.isEmpty() || !info.factory) return qMakePair(Task::Unknown, QString()); QString buildDir = info.buildDirectory.toString(); Tasks issues; - if (info.factory()) - issues = info.factory()->reportIssues(m_kit, m_projectPath.toString(), buildDir); + if (info.factory) + issues = info.factory->reportIssues(m_kit, m_projectPath.toString(), buildDir); QString text; Task::TaskType highestType = Task::Unknown; diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 02c306c15e..9e297c470d 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -428,7 +428,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory() if (forSetup) { - BuildInfo info = createBuildInfo(k, BuildConfiguration::Debug); + BuildInfo info = createBuildInfo(BuildConfiguration::Debug); //: The name of the debug build configuration created by default for a qbs project. info.displayName = BuildConfiguration::tr("Debug"); //: Non-ASCII characters in directory suffix may cause build issues. @@ -436,7 +436,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory() info.buildDirectory = defaultBuildDirectory(projectPath, k, dbg, info.buildType); result << info; - info = createBuildInfo(k, BuildConfiguration::Release); + info = createBuildInfo(BuildConfiguration::Release); //: The name of the release build configuration created by default for a qbs project. info.displayName = BuildConfiguration::tr("Release"); //: Non-ASCII characters in directory suffix may cause build issues. @@ -446,7 +446,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory() } else { - result << createBuildInfo(k, BuildConfiguration::Debug); + result << createBuildInfo(BuildConfiguration::Debug); } @@ -454,11 +454,9 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory() }); } -BuildInfo QbsBuildConfigurationFactory::createBuildInfo(const Kit *k, - BuildConfiguration::BuildType type) const +BuildInfo QbsBuildConfigurationFactory::createBuildInfo(BuildConfiguration::BuildType type) const { - BuildInfo info(this); - info.kitId = k->id(); + BuildInfo info; info.buildType = type; info.typeName = BuildConfiguration::tr("Build"); QVariantMap config; diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index c540acff73..c6217835c0 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -101,8 +101,7 @@ public: QbsBuildConfigurationFactory(); private: - ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k, - ProjectExplorer::BuildConfiguration::BuildType type) const; + ProjectExplorer::BuildInfo createBuildInfo(ProjectExplorer::BuildConfiguration::BuildType type) const; }; } // namespace Internal diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp index 01acfec13e..8ff3371eef 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp @@ -218,25 +218,18 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const }); } -const QList<BuildInfo> QbsProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const +const QList<BuildInfo> QbsProjectImporter::buildInfoList(void *directoryData) const { - qCDebug(qbsPmLog) << "creating build info for kit" << k->displayName(); - const auto factory = dynamic_cast<QbsBuildConfigurationFactory *>( - BuildConfigurationFactory::find(k, projectFilePath())); - if (!factory) { - qCDebug(qbsPmLog) << "no build config factory found"; - return {}; - } const auto * const bgData = static_cast<BuildGraphData *>(directoryData); - BuildInfo info(factory); + BuildInfo info; info.displayName = bgData->bgFilePath.toFileInfo().completeBaseName(); info.buildType = bgData->buildVariant == "debug" ? BuildConfiguration::Debug : BuildConfiguration::Release; - info.kitId = k->id(); info.buildDirectory = bgData->bgFilePath.parentDir().parentDir(); QVariantMap config = bgData->overriddenProperties; config.insert("configName", info.displayName); info.extraInfo = config; + qCDebug(qbsPmLog) << "creating build info for " << info.displayName << ' ' << bgData->buildVariant; return {info}; } diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.h b/src/plugins/qbsprojectmanager/qbsprojectimporter.h index 345e57522b..49fba42f28 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectimporter.h +++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.h @@ -42,8 +42,7 @@ private: QList<void *> examineDirectory(const Utils::FilePath &importPath) const override; bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const override; ProjectExplorer::Kit *createKit(void *directoryData) const override; - const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k, - void *directoryData) const override; + const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const override; void deleteDirectoryData(void *directoryData) const override; }; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index ca2680deec..08ad2926ad 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -692,60 +692,13 @@ QString QmakeBuildConfiguration::extractSpecFromArguments(QString *args, \class QmakeBuildConfigurationFactory */ -QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory() -{ - registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID); - setSupportedProjectType(Constants::QMAKEPROJECT_ID); - setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE); - setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) { - QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(k); - Tasks issues; - if (version) - issues << version->reportIssues(projectPath, buildDir); - if (QmakeSettings::warnAgainstUnalignedBuildDir() - && !QmakeBuildConfiguration::isBuildDirAtSafeLocation( - QFileInfo(projectPath).absoluteDir().path(), QDir(buildDir).absolutePath())) { - issues.append(Task(Task::Warning, QmakeBuildConfiguration::unalignedBuildDirWarning(), - Utils::FilePath(), -1, - ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)); - } - return issues; - }); - - setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) { - QList<BuildInfo> result; - - BaseQtVersion *qtVersion = QtKitAspect::qtVersion(k); - - if (forSetup && (!qtVersion || !qtVersion->isValid())) - return result; - - const auto addBuild = [&](BuildConfiguration::BuildType buildType) { - BuildInfo info = createBuildInfo(k, projectPath, buildType); - if (!forSetup) { - info.displayName.clear(); // ask for a name - info.buildDirectory.clear(); // This depends on the displayName - } - result << info; - }; - - addBuild(BuildConfiguration::Debug); - addBuild(BuildConfiguration::Release); - if (qtVersion && qtVersion->qtVersion().majorVersion > 4) - addBuild(BuildConfiguration::Profile); - - return result; - }); -} - -BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k, - const FilePath &projectPath, - BuildConfiguration::BuildType type) const +static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath, + BuildConfiguration::BuildType type) { const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings(); BaseQtVersion *version = QtKitAspect::qtVersion(k); QmakeExtraBuildInfo extraInfo; - BuildInfo info(this); + BuildInfo info; QString suffix; if (type == BuildConfiguration::Release) { @@ -783,7 +736,6 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k, } info.typeName = info.displayName; // Leave info.buildDirectory unset; - info.kitId = k->id(); // check if this project is in the source directory: if (version && version->isInSourceDirectory(projectPath)) { @@ -804,6 +756,52 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k, return info; } +QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory() +{ + registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID); + setSupportedProjectType(Constants::QMAKEPROJECT_ID); + setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE); + setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) { + QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(k); + Tasks issues; + if (version) + issues << version->reportIssues(projectPath, buildDir); + if (QmakeSettings::warnAgainstUnalignedBuildDir() + && !QmakeBuildConfiguration::isBuildDirAtSafeLocation( + QFileInfo(projectPath).absoluteDir().path(), QDir(buildDir).absolutePath())) { + issues.append(Task(Task::Warning, QmakeBuildConfiguration::unalignedBuildDirWarning(), + Utils::FilePath(), -1, + ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM)); + } + return issues; + }); + + setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) { + QList<BuildInfo> result; + + BaseQtVersion *qtVersion = QtKitAspect::qtVersion(k); + + if (forSetup && (!qtVersion || !qtVersion->isValid())) + return result; + + const auto addBuild = [&](BuildConfiguration::BuildType buildType) { + BuildInfo info = createBuildInfo(k, projectPath, buildType); + if (!forSetup) { + info.displayName.clear(); // ask for a name + info.buildDirectory.clear(); // This depends on the displayName + } + result << info; + }; + + addBuild(BuildConfiguration::Debug); + addBuild(BuildConfiguration::Release); + if (qtVersion && qtVersion->qtVersion().majorVersion > 4) + addBuild(BuildConfiguration::Profile); + + return result; + }); +} + BuildConfiguration::BuildType QmakeBuildConfiguration::buildType() const { if (qmakeBuildConfiguration() & BaseQtVersion::DebugBuild) diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h index c2e947127f..53d92c3c59 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h @@ -155,10 +155,6 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeBuildConfigurationFactory : public Project { public: QmakeBuildConfigurationFactory(); - -private: - ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k, const Utils::FilePath &projectPath, - ProjectExplorer::BuildConfiguration::BuildType type) const; }; } // namespace QmakeProjectManager diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp index 2a16f1e7fd..71fd912e10 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp @@ -232,16 +232,12 @@ Kit *QmakeProjectImporter::createKit(void *directoryData) const return createTemporaryKit(data->qtVersionData, data->parsedSpec, data->archConfig, data->osType); } -const QList<BuildInfo> QmakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const +const QList<BuildInfo> QmakeProjectImporter::buildInfoList(void *directoryData) const { auto *data = static_cast<DirectoryData *>(directoryData); - auto factory = dynamic_cast<QmakeBuildConfigurationFactory *>( - BuildConfigurationFactory::find(k, projectFilePath())); - if (!factory) - return {}; // create info: - BuildInfo info(factory); + BuildInfo info; if (data->buildConfig & BaseQtVersion::DebugBuild) { info.buildType = BuildConfiguration::Debug; info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Debug"); @@ -249,7 +245,6 @@ const QList<BuildInfo> QmakeProjectImporter::buildInfoListForKit(const Kit *k, v info.buildType = BuildConfiguration::Release; info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Release"); } - info.kitId = k->id(); info.buildDirectory = data->buildDirectory; QmakeExtraBuildInfo extra; diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h index c6f364210a..8e48311f54 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h +++ b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h @@ -44,8 +44,7 @@ private: QList<void *> examineDirectory(const Utils::FilePath &importPath) const final; bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final; ProjectExplorer::Kit *createKit(void *directoryData) const final; - const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k, - void *directoryData) const final; + const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final; void deleteDirectoryData(void *directoryData) const final; diff --git a/src/plugins/qtsupport/qtprojectimporter.cpp b/src/plugins/qtsupport/qtprojectimporter.cpp index 1ba4de7321..8a695d2466 100644 --- a/src/plugins/qtsupport/qtprojectimporter.cpp +++ b/src/plugins/qtsupport/qtprojectimporter.cpp @@ -181,7 +181,7 @@ protected: QList<void *> examineDirectory(const Utils::FilePath &importPath) const override; bool matchKit(void *directoryData, const Kit *k) const override; Kit *createKit(void *directoryData) const override; - const QList<BuildInfo> buildInfoListForKit(const Kit *k, void *directoryData) const override; + const QList<BuildInfo> buildInfoList(void *directoryData) const override; void deleteDirectoryData(void *directoryData) const override; private: @@ -241,7 +241,7 @@ Kit *TestQtProjectImporter::createKit(void *directoryData) const }); } -const QList<BuildInfo> TestQtProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const +const QList<BuildInfo> TestQtProjectImporter::buildInfoList(void *directoryData) const { Q_UNUSED(directoryData) assert(m_testData.contains(directoryData)); @@ -252,7 +252,6 @@ const QList<BuildInfo> TestQtProjectImporter::buildInfoListForKit(const Kit *k, info.displayName = "Test Build info"; info.typeName = "Debug"; info.buildDirectory = m_path; - info.kitId = k->id(); info.buildType = BuildConfiguration::Debug; return {info}; } |