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::AutotoolsBuildConfiguration(Target *parent, Core::Id id)
|
AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *target, Core::Id id)
|
||||||
: BuildConfiguration(parent, id)
|
: BuildConfiguration(target, id)
|
||||||
{
|
{
|
||||||
// /<foobar> is used so the un-changed check in setBuildDirectory() works correctly.
|
// /<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.
|
// 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");
|
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
||||||
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
||||||
|
|
||||||
setInitializer([this](const BuildInfo &) {
|
|
||||||
// ### Build Steps Build ###
|
// ### Build Steps Build ###
|
||||||
// autogen.sh or autoreconf
|
QFile autogenFile(target->project()->projectDirectory().toString() + "/autogen.sh");
|
||||||
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
|
||||||
if (autogenFile.exists())
|
if (autogenFile.exists())
|
||||||
buildSteps()->appendStep(Constants::AUTOGEN_STEP_ID);
|
appendInitialBuildStep(Constants::AUTOGEN_STEP_ID); // autogen.sh
|
||||||
else
|
else
|
||||||
buildSteps()->appendStep(Constants::AUTORECONF_STEP_ID);
|
appendInitialBuildStep(Constants::AUTORECONF_STEP_ID); // autoreconf
|
||||||
|
|
||||||
// ./configure.
|
appendInitialBuildStep(Constants::CONFIGURE_STEP_ID); // ./configure.
|
||||||
buildSteps()->appendStep(Constants::CONFIGURE_STEP_ID);
|
appendInitialBuildStep(Constants::MAKE_STEP_ID); // make
|
||||||
|
|
||||||
// make
|
|
||||||
buildSteps()->appendStep(Constants::MAKE_STEP_ID);
|
|
||||||
|
|
||||||
// ### Build Steps Clean ###
|
// ### Build Steps Clean ###
|
||||||
cleanSteps()->appendStep(Constants::MAKE_STEP_ID);
|
appendInitialBuildStep(Constants::MAKE_STEP_ID);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// AutotoolsBuildConfiguration class
|
|
||||||
|
|
||||||
AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
|
AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
|
||||||
{
|
{
|
||||||
registerBuildConfiguration<AutotoolsBuildConfiguration>
|
registerBuildConfiguration<AutotoolsBuildConfiguration>
|
||||||
|
@@ -37,7 +37,7 @@ class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
friend class ProjectExplorer::BuildConfigurationFactory;
|
friend class ProjectExplorer::BuildConfigurationFactory;
|
||||||
AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, Core::Id id);
|
AutotoolsBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
||||||
};
|
};
|
||||||
|
|
||||||
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||||
|
@@ -75,9 +75,10 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
displayName(),
|
displayName(),
|
||||||
BuildConfiguration::Unknown));
|
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;
|
CMakeConfig config;
|
||||||
config.append({"CMAKE_BUILD_TYPE", info.typeName.toUtf8()});
|
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}"});
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"CMAKE_FIND_ROOT_PATH", "%{Qt:QT_INSTALL_PREFIX}"});
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
|
||||||
|
|
||||||
if (info.buildDirectory.isEmpty()) {
|
if (info.buildDirectory.isEmpty()) {
|
||||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
k,
|
k,
|
||||||
|
@@ -84,6 +84,8 @@ public:
|
|||||||
mutable Utils::Environment m_cachedEnvironment;
|
mutable Utils::Environment m_cachedEnvironment;
|
||||||
QString m_configWidgetDisplayName;
|
QString m_configWidgetDisplayName;
|
||||||
bool m_configWidgetHasFrame = false;
|
bool m_configWidgetHasFrame = false;
|
||||||
|
QList<Core::Id> m_initialBuildSteps;
|
||||||
|
QList<Core::Id> m_initialCleanSteps;
|
||||||
|
|
||||||
// FIXME: Remove.
|
// FIXME: Remove.
|
||||||
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
||||||
@@ -190,6 +192,12 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
|
|||||||
|
|
||||||
d->m_initialBuildType = info.buildType;
|
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();
|
acquaintAspects();
|
||||||
|
|
||||||
if (d->m_initializer)
|
if (d->m_initializer)
|
||||||
@@ -250,6 +258,16 @@ BuildStepList *BuildConfiguration::cleanSteps() const
|
|||||||
return &d->m_cleanSteps;
|
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 BuildConfiguration::toMap() const
|
||||||
{
|
{
|
||||||
QVariantMap map = ProjectConfiguration::toMap();
|
QVariantMap map = ProjectConfiguration::toMap();
|
||||||
|
@@ -80,6 +80,9 @@ public:
|
|||||||
BuildStepList *buildSteps() const;
|
BuildStepList *buildSteps() const;
|
||||||
BuildStepList *cleanSteps() const;
|
BuildStepList *cleanSteps() const;
|
||||||
|
|
||||||
|
void appendInitialBuildStep(Core::Id id);
|
||||||
|
void appendInitialCleanStep(Core::Id id);
|
||||||
|
|
||||||
bool fromMap(const QVariantMap &map) override;
|
bool fromMap(const QVariantMap &map) override;
|
||||||
QVariantMap toMap() const override;
|
QVariantMap toMap() const override;
|
||||||
|
|
||||||
|
@@ -108,15 +108,16 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
{
|
{
|
||||||
setConfigWidgetDisplayName(tr("General"));
|
setConfigWidgetDisplayName(tr("General"));
|
||||||
setConfigWidgetHasFrame(true);
|
setConfigWidgetHasFrame(true);
|
||||||
|
|
||||||
m_buildSystem = new QmakeBuildSystem(this);
|
m_buildSystem = new QmakeBuildSystem(this);
|
||||||
|
|
||||||
|
appendInitialCleanStep(Constants::MAKESTEP_BS_ID);
|
||||||
|
|
||||||
setInitializer([this, target](const BuildInfo &info) {
|
setInitializer([this, target](const BuildInfo &info) {
|
||||||
auto qmakeStep = new QMakeStep(buildSteps());
|
auto qmakeStep = new QMakeStep(buildSteps());
|
||||||
buildSteps()->appendStep(qmakeStep);
|
buildSteps()->appendStep(qmakeStep);
|
||||||
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
||||||
|
|
||||||
cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
|
|
||||||
|
|
||||||
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
|
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
|
||||||
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
|
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user