diff options
author | hjk <hjk@qt.io> | 2019-12-09 12:59:38 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-12-09 14:12:45 +0000 |
commit | 041a86c8c7d8a7e563655c5ae4dae08752ceaad8 (patch) | |
tree | f1434adf884c101bc6741ab63c3565b56346a1e6 /src/plugins/qmakeprojectmanager | |
parent | b82add7813384c19879044b44796db1f8f067ad3 (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.cpp | 89 | ||||
-rw-r--r-- | src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h | 2 |
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; |