aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmakeprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-12-09 12:59:38 +0100
committerhjk <hjk@qt.io>2019-12-09 14:12:45 +0000
commit041a86c8c7d8a7e563655c5ae4dae08752ceaad8 (patch)
treef1434adf884c101bc6741ab63c3565b56346a1e6 /src/plugins/qmakeprojectmanager
parentb82add7813384c19879044b44796db1f8f067ad3 (diff)
ProjectExplorer: Use function object for special build config init
Change-Id: I5da0f28ee1a64f8d9a3145f059019be702bee463 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/qmakeprojectmanager')
-rw-r--r--src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp89
-rw-r--r--src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h2
2 files changed, 44 insertions, 47 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
index 1a86fa55221..de5f1cd1f3e 100644
--- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
@@ -109,6 +109,50 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
setConfigWidgetHasFrame(true);
m_buildSystem = new QmakeBuildSystem(this);
+ setInitializer([this, target] {
+ auto qmakeStep = new QMakeStep(buildSteps());
+ buildSteps()->appendStep(qmakeStep);
+ buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
+
+ cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
+
+ const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
+ BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
+
+ BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
+ if (initialBuildType() == BuildConfiguration::Debug)
+ config |= BaseQtVersion::DebugBuild;
+ else
+ config &= ~BaseQtVersion::DebugBuild;
+
+ QString additionalArguments = qmakeExtra.additionalArguments;
+ if (!additionalArguments.isEmpty())
+ qmakeStep->setUserArguments(additionalArguments);
+
+ aspect<SeparateDebugInfoAspect>()->setSetting(qmakeExtra.config.separateDebugInfo);
+ aspect<QmlDebuggingAspect>()->setSetting(qmakeExtra.config.linkQmlDebuggingQQ2);
+ aspect<QtQuickCompilerAspect>()->setSetting(qmakeExtra.config.useQtQuickCompiler);
+
+ setQMakeBuildConfiguration(config);
+
+ FilePath directory = initialBuildDirectory();
+ if (directory.isEmpty()) {
+ directory = shadowBuildDirectory(target->project()->projectFilePath(),
+ target->kit(), initialDisplayName(),
+ initialBuildType());
+ }
+
+ setBuildDirectory(directory);
+
+ if (DeviceTypeKitAspect::deviceTypeId(target->kit())
+ == Android::Constants::ANDROID_DEVICE_TYPE) {
+ buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
+ buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
+ }
+
+ updateCacheAndEmitEnvironmentChanged();
+ });
+
connect(target, &Target::kitChanged,
this, &QmakeBuildConfiguration::kitChanged);
MacroExpander *expander = macroExpander();
@@ -153,51 +197,6 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
});
}
-void QmakeBuildConfiguration::initialize()
-{
- auto qmakeStep = new QMakeStep(buildSteps());
- buildSteps()->appendStep(qmakeStep);
- buildSteps()->appendStep(Constants::MAKESTEP_BS_ID);
-
- cleanSteps()->appendStep(Constants::MAKESTEP_BS_ID);
-
- const QmakeExtraBuildInfo qmakeExtra = extraInfo().value<QmakeExtraBuildInfo>();
- BaseQtVersion *version = QtKitAspect::qtVersion(target()->kit());
-
- BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
- if (initialBuildType() == BuildConfiguration::Debug)
- config |= BaseQtVersion::DebugBuild;
- else
- config &= ~BaseQtVersion::DebugBuild;
-
- QString additionalArguments = qmakeExtra.additionalArguments;
- if (!additionalArguments.isEmpty())
- qmakeStep->setUserArguments(additionalArguments);
-
- aspect<SeparateDebugInfoAspect>()->setSetting(qmakeExtra.config.separateDebugInfo);
- aspect<QmlDebuggingAspect>()->setSetting(qmakeExtra.config.linkQmlDebuggingQQ2);
- aspect<QtQuickCompilerAspect>()->setSetting(qmakeExtra.config.useQtQuickCompiler);
-
- setQMakeBuildConfiguration(config);
-
- FilePath directory = initialBuildDirectory();
- if (directory.isEmpty()) {
- directory = shadowBuildDirectory(target()->project()->projectFilePath(),
- target()->kit(), initialDisplayName(),
- initialBuildType());
- }
-
- setBuildDirectory(directory);
-
- if (DeviceTypeKitAspect::deviceTypeId(target()->kit())
- == Android::Constants::ANDROID_DEVICE_TYPE) {
- buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
- buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
- }
-
- updateCacheAndEmitEnvironmentChanged();
-}
-
QmakeBuildConfiguration::~QmakeBuildConfiguration()
{
delete m_buildSystem;
diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
index edb27829216..e003d86f7e0 100644
--- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
+++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
@@ -53,8 +53,6 @@ public:
ProjectExplorer::BuildSystem *buildSystem() const final;
- void initialize() override;
-
void setSubNodeBuild(QmakeProFileNode *node);
QmakeProFileNode *subNodeBuild() const;