forked from qt-creator/qt-creator
ProjectExplorer: Register some initial build steps by id
Helps to cut down BuildConfigration::setInitializer() usage. Plan is to have more of that where feasible. Change-Id: I138fcffc743daaf7068b5236c2a19c9ca0e3e2d4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -45,8 +45,8 @@ namespace Internal {
|
||||
|
||||
// AutotoolsBuildConfiguration
|
||||
|
||||
AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::Id id)
|
||||
: BuildConfiguration(parent, id)
|
||||
AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *target, Core::Id id)
|
||||
: BuildConfiguration(target, id)
|
||||
{
|
||||
// /<foobar> is used so the un-changed check in setBuildDirectory() works correctly.
|
||||
// The leading / is to avoid the relative the path expansion in BuildConfiguration::buildDirectory.
|
||||
@@ -54,29 +54,20 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
|
||||
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
||||
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
||||
|
||||
setInitializer([this](const BuildInfo &) {
|
||||
// ### Build Steps Build ###
|
||||
// autogen.sh or autoreconf
|
||||
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
||||
if (autogenFile.exists())
|
||||
buildSteps()->appendStep(Constants::AUTOGEN_STEP_ID);
|
||||
else
|
||||
buildSteps()->appendStep(Constants::AUTORECONF_STEP_ID);
|
||||
// ### Build Steps Build ###
|
||||
QFile autogenFile(target->project()->projectDirectory().toString() + "/autogen.sh");
|
||||
if (autogenFile.exists())
|
||||
appendInitialBuildStep(Constants::AUTOGEN_STEP_ID); // autogen.sh
|
||||
else
|
||||
appendInitialBuildStep(Constants::AUTORECONF_STEP_ID); // autoreconf
|
||||
|
||||
// ./configure.
|
||||
buildSteps()->appendStep(Constants::CONFIGURE_STEP_ID);
|
||||
appendInitialBuildStep(Constants::CONFIGURE_STEP_ID); // ./configure.
|
||||
appendInitialBuildStep(Constants::MAKE_STEP_ID); // make
|
||||
|
||||
// make
|
||||
buildSteps()->appendStep(Constants::MAKE_STEP_ID);
|
||||
|
||||
// ### Build Steps Clean ###
|
||||
cleanSteps()->appendStep(Constants::MAKE_STEP_ID);
|
||||
});
|
||||
// ### Build Steps Clean ###
|
||||
appendInitialBuildStep(Constants::MAKE_STEP_ID);
|
||||
}
|
||||
|
||||
|
||||
// AutotoolsBuildConfiguration class
|
||||
|
||||
AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
|
||||
{
|
||||
registerBuildConfiguration<AutotoolsBuildConfiguration>
|
||||
|
@@ -37,7 +37,7 @@ class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
||||
Q_OBJECT
|
||||
|
||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||
AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
||||
AutotoolsBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
||||
};
|
||||
|
||||
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
|
@@ -75,9 +75,10 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
||||
displayName(),
|
||||
BuildConfiguration::Unknown));
|
||||
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
appendInitialBuildStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
appendInitialCleanStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
|
||||
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
|
||||
CMakeConfig config;
|
||||
config.append({"CMAKE_BUILD_TYPE", info.typeName.toUtf8()});
|
||||
@@ -147,8 +148,6 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_FIND_ROOT_PATH", "%{Qt:QT_INSTALL_PREFIX}"});
|
||||
}
|
||||
|
||||
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
|
||||
if (info.buildDirectory.isEmpty()) {
|
||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||
k,
|
||||
|
@@ -84,6 +84,8 @@ public:
|
||||
mutable Utils::Environment m_cachedEnvironment;
|
||||
QString m_configWidgetDisplayName;
|
||||
bool m_configWidgetHasFrame = false;
|
||||
QList<Core::Id> m_initialBuildSteps;
|
||||
QList<Core::Id> m_initialCleanSteps;
|
||||
|
||||
// FIXME: Remove.
|
||||
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
||||
@@ -190,6 +192,12 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
|
||||
|
||||
d->m_initialBuildType = info.buildType;
|
||||
|
||||
for (Core::Id id : qAsConst(d->m_initialBuildSteps))
|
||||
d->m_buildSteps.appendStep(id);
|
||||
|
||||
for (Core::Id id : qAsConst(d->m_initialCleanSteps))
|
||||
d->m_cleanSteps.appendStep(id);
|
||||
|
||||
acquaintAspects();
|
||||
|
||||
if (d->m_initializer)
|
||||
@@ -250,6 +258,16 @@ BuildStepList *BuildConfiguration::cleanSteps() const
|
||||
return &d->m_cleanSteps;
|
||||
}
|
||||
|
||||
void BuildConfiguration::appendInitialBuildStep(Core::Id id)
|
||||
{
|
||||
d->m_initialBuildSteps.append(id);
|
||||
}
|
||||
|
||||
void BuildConfiguration::appendInitialCleanStep(Core::Id id)
|
||||
{
|
||||
d->m_initialCleanSteps.append(id);
|
||||
}
|
||||
|
||||
QVariantMap BuildConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap map = ProjectConfiguration::toMap();
|
||||
|
@@ -80,6 +80,9 @@ public:
|
||||
BuildStepList *buildSteps() const;
|
||||
BuildStepList *cleanSteps() const;
|
||||
|
||||
void appendInitialBuildStep(Core::Id id);
|
||||
void appendInitialCleanStep(Core::Id id);
|
||||
|
||||
bool fromMap(const QVariantMap &map) override;
|
||||
QVariantMap toMap() const override;
|
||||
|
||||
|
@@ -108,15 +108,16 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
||||
{
|
||||
setConfigWidgetDisplayName(tr("General"));
|
||||
setConfigWidgetHasFrame(true);
|
||||
|
||||
m_buildSystem = new QmakeBuildSystem(this);
|
||||
|
||||
appendInitialCleanStep(Constants::MAKESTEP_BS_ID);
|
||||
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
auto qmakeStep = new QMakeStep(buildSteps());
|
||||
buildSteps()->appendStep(qmakeStep);
|
||||
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||
|
||||
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||
|
||||
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
|
||||
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
|
||||
|
||||
|
Reference in New Issue
Block a user