From ad99e150cc586411ba5175fdba7220269b971e14 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 30 Jul 2019 13:45:05 +0200 Subject: [PATCH] GenericProject: Normalize make step setup We have only one id for the steps, so short of coming up with some fancy upgrade mechanism, stick to the one kind of step, but also use only one factory, and do the switch in the step constructor based on the nature of the parent buildsteplist. Change-Id: I8fcc599682840d61e4a7f8b6fb7b792aafdd8766 Reviewed-by: Christian Kandeler --- .../genericbuildconfiguration.cpp | 4 +- .../genericprojectmanager/genericmakestep.cpp | 50 ++++--------------- .../genericprojectmanager/genericmakestep.h | 12 ++--- .../genericprojectconstants.h | 2 + .../genericprojectplugin.cpp | 3 +- 5 files changed, 19 insertions(+), 52 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 2a32a1265e6..84f14798d20 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -63,10 +63,10 @@ void GenericBuildConfiguration::initialize(const BuildInfo &info) BuildConfiguration::initialize(info); BuildStepList *buildSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); - buildSteps->appendStep(new GenericMakeStep(buildSteps, "all")); + buildSteps->appendStep(Constants::GENERIC_MS_ID); BuildStepList *cleanSteps = stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); - cleanSteps->appendStep(new GenericMakeStep(cleanSteps, "clean")); + cleanSteps->appendStep(Constants::GENERIC_MS_ID); updateCacheAndEmitEnvironmentChanged(); } diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index 95b83c789ab..184aacb11cb 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -26,6 +26,7 @@ #include "genericmakestep.h" #include "genericprojectconstants.h" +#include #include using namespace ProjectExplorer; @@ -33,52 +34,23 @@ using namespace ProjectExplorer; namespace GenericProjectManager { namespace Internal { -const char GENERIC_MS_ID[] = "GenericProjectManager.GenericMakeStep"; - -GenericMakeStep::GenericMakeStep(BuildStepList *parent, const QString &buildTarget) - : MakeStep(parent, GENERIC_MS_ID) +GenericMakeStep::GenericMakeStep(BuildStepList *parent) + : MakeStep(parent, Constants::GENERIC_MS_ID) { - setBuildTarget(buildTarget); + if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_BUILD) { + setBuildTarget("all"); + } else if (parent->id() == ProjectExplorer::Constants::BUILDSTEPS_CLEAN) { + setBuildTarget("clean"); + setClean(true); + } setAvailableBuildTargets({"all", "clean"}); } -// -// GenericMakeAllStepFactory -// - -GenericMakeAllStepFactory::GenericMakeAllStepFactory() +GenericMakeStepFactory::GenericMakeStepFactory() { - struct Step : GenericMakeStep - { - Step(BuildStepList *bsl) : GenericMakeStep(bsl) { setBuildTarget("all"); } - }; - - registerStep(GENERIC_MS_ID); + registerStep(Constants::GENERIC_MS_ID); setDisplayName(MakeStep::defaultDisplayName()); setSupportedProjectType(Constants::GENERICPROJECT_ID); - setSupportedStepLists({ProjectExplorer::Constants::BUILDSTEPS_BUILD, - ProjectExplorer::Constants::BUILDSTEPS_DEPLOY}); -} - -// -// GenericMakeCleanStepFactory -// - -GenericMakeCleanStepFactory::GenericMakeCleanStepFactory() -{ - struct Step : GenericMakeStep - { - Step(BuildStepList *bsl) : GenericMakeStep(bsl) - { - setBuildTarget("clean", true); - setClean(true); - } - }; - - registerStep(GENERIC_MS_ID); - setDisplayName(MakeStep::defaultDisplayName()); - setSupportedProjectType(Constants::GENERICPROJECT_ID); - setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); } } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h index 6fe6bc47981..d48b341f59a 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.h +++ b/src/plugins/genericprojectmanager/genericmakestep.h @@ -37,19 +37,13 @@ class GenericMakeStep : public ProjectExplorer::MakeStep Q_OBJECT public: - explicit GenericMakeStep(ProjectExplorer::BuildStepList *parent, const QString &buildTarget = {}); + explicit GenericMakeStep(ProjectExplorer::BuildStepList *parent); }; -class GenericMakeAllStepFactory : public ProjectExplorer::BuildStepFactory +class GenericMakeStepFactory : public ProjectExplorer::BuildStepFactory { public: - GenericMakeAllStepFactory(); -}; - -class GenericMakeCleanStepFactory : public ProjectExplorer::BuildStepFactory -{ -public: - GenericMakeCleanStepFactory(); + GenericMakeStepFactory(); }; } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericprojectconstants.h b/src/plugins/genericprojectmanager/genericprojectconstants.h index 373663cf510..7fa597f99da 100644 --- a/src/plugins/genericprojectmanager/genericprojectconstants.h +++ b/src/plugins/genericprojectmanager/genericprojectconstants.h @@ -30,6 +30,8 @@ namespace Constants { const char GENERICMIMETYPE[] = "text/x-generic-project"; // ### FIXME +const char GENERIC_MS_ID[] = "GenericProjectManager.GenericMakeStep"; + // Contexts const char FILES_EDITOR_ID[] = "QT4.FilesEditor"; diff --git a/src/plugins/genericprojectmanager/genericprojectplugin.cpp b/src/plugins/genericprojectmanager/genericprojectplugin.cpp index 668ddd37c4b..0ffa12e2cf3 100644 --- a/src/plugins/genericprojectmanager/genericprojectplugin.cpp +++ b/src/plugins/genericprojectmanager/genericprojectplugin.cpp @@ -64,8 +64,7 @@ public: GenericProjectPluginPrivate(); ProjectFilesFactory projectFilesFactory; - GenericMakeAllStepFactory makeAllStepFactory; - GenericMakeCleanStepFactory makeCleanStepFactory; + GenericMakeStepFactory makeStepFactory; GenericBuildConfigurationFactory buildConfigFactory; QAction editFilesAction{GenericProjectPlugin::tr("Edit Files..."), nullptr};