forked from qt-creator/qt-creator
		
	Refactor deployment
* Add a DeployConfiguration class to hold settings related to deployment. * Add BuildStepsList to hold a list of buildsteps * Update BuildConfiguration to use BuildStepLists instead of manageing lists of buildsteps itself. * Update BuildManager to use BuildStepLists in its interfaces * Fix fallout introduced by API changes * Update .user file to new way of storing settings Task-number: QTCREATORBUG-1427 Task-number: QTCREATORBUG-1428 Task-number: QTCREATORBUG-1811 Task-number: QTCREATORBUG-1930
This commit is contained in:
		@@ -34,6 +34,7 @@
 | 
			
		||||
#include "cmaketarget.h"
 | 
			
		||||
 | 
			
		||||
#include <projectexplorer/projectexplorerconstants.h>
 | 
			
		||||
#include <projectexplorer/buildsteplist.h>
 | 
			
		||||
#include <utils/qtcassert.h>
 | 
			
		||||
 | 
			
		||||
#include <QtGui/QInputDialog>
 | 
			
		||||
@@ -61,6 +62,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeTarget *parent, CMakeBuild
 | 
			
		||||
    m_buildDirectory(source->m_buildDirectory),
 | 
			
		||||
    m_msvcVersion(source->m_msvcVersion)
 | 
			
		||||
{
 | 
			
		||||
    Q_ASSERT(parent);
 | 
			
		||||
    cloneSteps(source);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -217,11 +219,14 @@ CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer:
 | 
			
		||||
    CMakeBuildConfiguration *bc = new CMakeBuildConfiguration(cmtarget);
 | 
			
		||||
    bc->setDisplayName(buildConfigurationName);
 | 
			
		||||
 | 
			
		||||
    MakeStep *makeStep = new MakeStep(bc);
 | 
			
		||||
    bc->insertStep(ProjectExplorer::BuildStep::Build, 0, makeStep);
 | 
			
		||||
    ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
 | 
			
		||||
    ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
 | 
			
		||||
 | 
			
		||||
    MakeStep *cleanMakeStep = new MakeStep(bc);
 | 
			
		||||
    bc->insertStep(ProjectExplorer::BuildStep::Clean, 0, cleanMakeStep);
 | 
			
		||||
    MakeStep *makeStep = new MakeStep(buildSteps);
 | 
			
		||||
    buildSteps->insertStep(0, makeStep);
 | 
			
		||||
 | 
			
		||||
    MakeStep *cleanMakeStep = new MakeStep(cleanSteps);
 | 
			
		||||
    cleanSteps->insertStep(0, cleanMakeStep);
 | 
			
		||||
    cleanMakeStep->setAdditionalArguments(QStringList() << "clean");
 | 
			
		||||
    cleanMakeStep->setClean(true);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +38,7 @@
 | 
			
		||||
 | 
			
		||||
#include <projectexplorer/projectexplorerconstants.h>
 | 
			
		||||
#include <projectexplorer/buildenvironmentwidget.h>
 | 
			
		||||
#include <projectexplorer/buildsteplist.h>
 | 
			
		||||
#include <cpptools/cppmodelmanagerinterface.h>
 | 
			
		||||
#include <extensionsystem/pluginmanager.h>
 | 
			
		||||
#include <utils/qtcassert.h>
 | 
			
		||||
@@ -410,7 +411,7 @@ QString CMakeProject::displayName() const
 | 
			
		||||
 | 
			
		||||
QString CMakeProject::id() const
 | 
			
		||||
{
 | 
			
		||||
    return QLatin1String("CMakeProjectManager.CMakeProject");
 | 
			
		||||
    return QLatin1String(Constants::CMAKEPROJECT_ID);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Core::IFile *CMakeProject::file() const
 | 
			
		||||
@@ -521,7 +522,7 @@ bool CMakeProject::fromMap(const QVariantMap &map)
 | 
			
		||||
 | 
			
		||||
    if (!hasUserFile && hasBuildTarget("all")) {
 | 
			
		||||
        MakeStep *makeStep = qobject_cast<MakeStep *>(
 | 
			
		||||
                activeTarget()->activeBuildConfiguration()->steps(ProjectExplorer::BuildStep::Build).at(0));
 | 
			
		||||
                    activeTarget()->activeBuildConfiguration()->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD)->at(0));
 | 
			
		||||
        Q_ASSERT(makeStep);
 | 
			
		||||
        makeStep->setBuildTarget("all", true);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +38,10 @@ const char * const CMAKEMIMETYPE  = "text/x-cmake"; // TOOD check that this is c
 | 
			
		||||
const char * const CMAKE_EDITOR_ID = "CMakeProject.CMakeEditor";
 | 
			
		||||
const char * const CMAKE_EDITOR_DISPLAY_NAME = "CMake Editor";
 | 
			
		||||
const char * const C_CMAKEEDITOR = "CMakeProject.Context.CMakeEditor";
 | 
			
		||||
 | 
			
		||||
// Project
 | 
			
		||||
const char * const CMAKEPROJECT_ID = "CMakeProjectManager.CMakeProject";
 | 
			
		||||
 | 
			
		||||
} // namespace Constants
 | 
			
		||||
} // namespace CMakeProjectManager
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,10 @@
 | 
			
		||||
#include "cmakerunconfiguration.h"
 | 
			
		||||
#include "cmakebuildconfiguration.h"
 | 
			
		||||
 | 
			
		||||
#include <projectexplorer/buildsteplist.h>
 | 
			
		||||
#include <projectexplorer/deployconfiguration.h>
 | 
			
		||||
#include <projectexplorer/customexecutablerunconfiguration.h>
 | 
			
		||||
#include <projectexplorer/projectexplorerconstants.h>
 | 
			
		||||
 | 
			
		||||
#include <QtGui/QApplication>
 | 
			
		||||
#include <QtGui/QStyle>
 | 
			
		||||
@@ -58,7 +61,8 @@ QString displayNameForId(const QString &id) {
 | 
			
		||||
 | 
			
		||||
CMakeTarget::CMakeTarget(CMakeProject *parent) :
 | 
			
		||||
    ProjectExplorer::Target(parent, QLatin1String(DEFAULT_CMAKE_TARGET_ID)),
 | 
			
		||||
    m_buildConfigurationFactory(new CMakeBuildConfigurationFactory(this))
 | 
			
		||||
    m_buildConfigurationFactory(new CMakeBuildConfigurationFactory(this)),
 | 
			
		||||
    m_deployConfigurationFactory(new ProjectExplorer::DeployConfigurationFactory(this))
 | 
			
		||||
{
 | 
			
		||||
    setDisplayName(displayNameForId(id()));
 | 
			
		||||
    setIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon));
 | 
			
		||||
@@ -81,7 +85,12 @@ CMakeBuildConfiguration *CMakeTarget::activeBuildConfiguration() const
 | 
			
		||||
 | 
			
		||||
CMakeBuildConfigurationFactory *CMakeTarget::buildConfigurationFactory() const
 | 
			
		||||
{
 | 
			
		||||
        return m_buildConfigurationFactory;
 | 
			
		||||
    return m_buildConfigurationFactory;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ProjectExplorer::DeployConfigurationFactory *CMakeTarget::deployConfigurationFactory() const
 | 
			
		||||
{
 | 
			
		||||
    return m_deployConfigurationFactory;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString CMakeTarget::defaultBuildDirectory() const
 | 
			
		||||
@@ -187,16 +196,21 @@ CMakeTarget *CMakeTargetFactory::create(ProjectExplorer::Project *parent, const
 | 
			
		||||
    CMakeBuildConfiguration *bc(new CMakeBuildConfiguration(t));
 | 
			
		||||
    bc->setDisplayName("all");
 | 
			
		||||
 | 
			
		||||
    // Now create a standard build configuration
 | 
			
		||||
    bc->insertStep(ProjectExplorer::BuildStep::Build, 0, new MakeStep(bc));
 | 
			
		||||
    ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
 | 
			
		||||
    ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
 | 
			
		||||
 | 
			
		||||
    MakeStep *cleanMakeStep = new MakeStep(bc);
 | 
			
		||||
    bc->insertStep(ProjectExplorer::BuildStep::Clean, 0, cleanMakeStep);
 | 
			
		||||
    // Now create a standard build configuration
 | 
			
		||||
    buildSteps->insertStep(0, new MakeStep(buildSteps));
 | 
			
		||||
 | 
			
		||||
    MakeStep *cleanMakeStep = new MakeStep(cleanSteps);
 | 
			
		||||
    cleanSteps->insertStep(0, cleanMakeStep);
 | 
			
		||||
    cleanMakeStep->setAdditionalArguments(QStringList() << "clean");
 | 
			
		||||
    cleanMakeStep->setClean(true);
 | 
			
		||||
 | 
			
		||||
    t->addBuildConfiguration(bc);
 | 
			
		||||
 | 
			
		||||
    t->addDeployConfiguration(t->deployConfigurationFactory()->create(t, ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID));
 | 
			
		||||
 | 
			
		||||
    t->updateRunConfigurations();
 | 
			
		||||
 | 
			
		||||
    return t;
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,7 @@ public:
 | 
			
		||||
    CMakeBuildConfiguration *activeBuildConfiguration() const;
 | 
			
		||||
 | 
			
		||||
    CMakeBuildConfigurationFactory *buildConfigurationFactory() const;
 | 
			
		||||
    ProjectExplorer::DeployConfigurationFactory *deployConfigurationFactory() const;
 | 
			
		||||
 | 
			
		||||
    QString defaultBuildDirectory() const;
 | 
			
		||||
 | 
			
		||||
@@ -69,6 +70,7 @@ private slots:
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    CMakeBuildConfigurationFactory *m_buildConfigurationFactory;
 | 
			
		||||
    ProjectExplorer::DeployConfigurationFactory *m_deployConfigurationFactory;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class CMakeTargetFactory : public ProjectExplorer::ITargetFactory
 | 
			
		||||
 
 | 
			
		||||
@@ -34,6 +34,7 @@
 | 
			
		||||
#include "cmaketarget.h"
 | 
			
		||||
#include "cmakebuildconfiguration.h"
 | 
			
		||||
 | 
			
		||||
#include <projectexplorer/buildsteplist.h>
 | 
			
		||||
#include <projectexplorer/projectexplorer.h>
 | 
			
		||||
#include <projectexplorer/gnumakeparser.h>
 | 
			
		||||
 | 
			
		||||
@@ -57,22 +58,22 @@ const char * const ADDITIONAL_ARGUMENTS_KEY("CMakeProjectManager.MakeStep.Additi
 | 
			
		||||
 | 
			
		||||
// TODO: Move progress information into an IOutputParser!
 | 
			
		||||
 | 
			
		||||
MakeStep::MakeStep(BuildConfiguration *bc) :
 | 
			
		||||
    AbstractProcessStep(bc, QLatin1String(MS_ID)), m_clean(false),
 | 
			
		||||
MakeStep::MakeStep(BuildStepList *bsl) :
 | 
			
		||||
    AbstractProcessStep(bsl, QLatin1String(MS_ID)), m_clean(false),
 | 
			
		||||
    m_futureInterface(0)
 | 
			
		||||
{
 | 
			
		||||
    ctor();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MakeStep::MakeStep(BuildConfiguration *bc, const QString &id) :
 | 
			
		||||
    AbstractProcessStep(bc, id), m_clean(false),
 | 
			
		||||
MakeStep::MakeStep(BuildStepList *bsl, const QString &id) :
 | 
			
		||||
    AbstractProcessStep(bsl, id), m_clean(false),
 | 
			
		||||
    m_futureInterface(0)
 | 
			
		||||
{
 | 
			
		||||
    ctor();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MakeStep::MakeStep(BuildConfiguration *bc, MakeStep *bs) :
 | 
			
		||||
    AbstractProcessStep(bc, bs),
 | 
			
		||||
MakeStep::MakeStep(BuildStepList *bsl, MakeStep *bs) :
 | 
			
		||||
    AbstractProcessStep(bsl, bs),
 | 
			
		||||
    m_clean(bs->m_clean),
 | 
			
		||||
    m_futureInterface(0),
 | 
			
		||||
    m_buildTargets(bs->m_buildTargets),
 | 
			
		||||
@@ -317,42 +318,41 @@ MakeStepFactory::~MakeStepFactory()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool MakeStepFactory::canCreate(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QString &id) const
 | 
			
		||||
bool MakeStepFactory::canCreate(BuildStepList *parent, const QString &id) const
 | 
			
		||||
{
 | 
			
		||||
    Q_UNUSED(type)
 | 
			
		||||
    if (!qobject_cast<CMakeBuildConfiguration *>(parent))
 | 
			
		||||
    if (parent->target()->project()->id() != QLatin1String(Constants::CMAKEPROJECT_ID))
 | 
			
		||||
        return false;
 | 
			
		||||
    return QLatin1String(MS_ID) == id;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BuildStep *MakeStepFactory::create(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QString &id)
 | 
			
		||||
BuildStep *MakeStepFactory::create(BuildStepList *parent, const QString &id)
 | 
			
		||||
{
 | 
			
		||||
    if (!canCreate(parent, type, id))
 | 
			
		||||
    if (!canCreate(parent, id))
 | 
			
		||||
        return 0;
 | 
			
		||||
    return new MakeStep(parent);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool MakeStepFactory::canClone(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, BuildStep *source) const
 | 
			
		||||
bool MakeStepFactory::canClone(BuildStepList *parent, BuildStep *source) const
 | 
			
		||||
{
 | 
			
		||||
    return canCreate(parent, type, source->id());
 | 
			
		||||
    return canCreate(parent, source->id());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BuildStep *MakeStepFactory::clone(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, BuildStep *source)
 | 
			
		||||
BuildStep *MakeStepFactory::clone(BuildStepList *parent, BuildStep *source)
 | 
			
		||||
{
 | 
			
		||||
    if (!canClone(parent, type, source))
 | 
			
		||||
    if (!canClone(parent, source))
 | 
			
		||||
        return 0;
 | 
			
		||||
    return new MakeStep(parent, static_cast<MakeStep *>(source));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool MakeStepFactory::canRestore(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QVariantMap &map) const
 | 
			
		||||
bool MakeStepFactory::canRestore(BuildStepList *parent, const QVariantMap &map) const
 | 
			
		||||
{
 | 
			
		||||
    QString id(ProjectExplorer::idFromMap(map));
 | 
			
		||||
    return canCreate(parent, type, id);
 | 
			
		||||
    return canCreate(parent, id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QVariantMap &map)
 | 
			
		||||
BuildStep *MakeStepFactory::restore(BuildStepList *parent, const QVariantMap &map)
 | 
			
		||||
{
 | 
			
		||||
    if (!canRestore(parent, type, map))
 | 
			
		||||
    if (!canRestore(parent, map))
 | 
			
		||||
        return 0;
 | 
			
		||||
    MakeStep *bs(new MakeStep(parent));
 | 
			
		||||
    if (bs->fromMap(map))
 | 
			
		||||
@@ -361,12 +361,11 @@ BuildStep *MakeStepFactory::restore(BuildConfiguration *parent, ProjectExplorer:
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type) const
 | 
			
		||||
QStringList MakeStepFactory::availableCreationIds(ProjectExplorer::BuildStepList *parent) const
 | 
			
		||||
{
 | 
			
		||||
    Q_UNUSED(type)
 | 
			
		||||
    if (!qobject_cast<CMakeBuildConfiguration *>(parent))
 | 
			
		||||
        return QStringList();
 | 
			
		||||
    return QStringList() << QLatin1String(MS_ID);
 | 
			
		||||
    if (parent->target()->project()->id() == QLatin1String(Constants::CMAKEPROJECT_ID))
 | 
			
		||||
        return QStringList() << QLatin1String(MS_ID);
 | 
			
		||||
    return QStringList();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString MakeStepFactory::displayNameForId(const QString &id) const
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@ class MakeStep : public ProjectExplorer::AbstractProcessStep
 | 
			
		||||
    // This is for modifying internal data
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildConfiguration *bc);
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildStepList *bsl);
 | 
			
		||||
    virtual ~MakeStep();
 | 
			
		||||
 | 
			
		||||
    CMakeBuildConfiguration *cmakeBuildConfiguration() const;
 | 
			
		||||
@@ -73,8 +73,8 @@ public:
 | 
			
		||||
    QVariantMap toMap() const;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildConfiguration *bc, MakeStep *bs);
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildConfiguration *bc, const QString &id);
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildStepList *bsl, MakeStep *bs);
 | 
			
		||||
    MakeStep(ProjectExplorer::BuildStepList *bsl, const QString &id);
 | 
			
		||||
 | 
			
		||||
    bool fromMap(const QVariantMap &map);
 | 
			
		||||
 | 
			
		||||
@@ -119,14 +119,14 @@ public:
 | 
			
		||||
    explicit MakeStepFactory(QObject *parent = 0);
 | 
			
		||||
    virtual ~MakeStepFactory();
 | 
			
		||||
 | 
			
		||||
    virtual bool canCreate(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QString &id) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QString &id);
 | 
			
		||||
    virtual bool canClone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, ProjectExplorer::BuildStep *source) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, ProjectExplorer::BuildStep *source);
 | 
			
		||||
    virtual bool canRestore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QVariantMap &map) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildConfiguration *parent, ProjectExplorer::BuildStep::Type type, const QVariantMap &map);
 | 
			
		||||
    virtual bool canCreate(ProjectExplorer::BuildStepList *parent, const QString &id) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildStepList *parent, const QString &id);
 | 
			
		||||
    virtual bool canClone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStepList *parent, ProjectExplorer::BuildStep *source);
 | 
			
		||||
    virtual bool canRestore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map) const;
 | 
			
		||||
    virtual ProjectExplorer::BuildStep *restore(ProjectExplorer::BuildStepList *parent, const QVariantMap &map);
 | 
			
		||||
 | 
			
		||||
    virtual QStringList availableCreationIds(ProjectExplorer::BuildConfiguration *bc, ProjectExplorer::BuildStep::Type type) const;
 | 
			
		||||
    virtual QStringList availableCreationIds(ProjectExplorer::BuildStepList *bc) const;
 | 
			
		||||
    virtual QString displayNameForId(const QString &id) const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user