forked from qt-creator/qt-creator
ProjectExplorer: Pass parameters to BuildConfiguration initialization
... directly again, mostly undoing the temporary hack from fb631cb258
.
Change-Id: I4485dcb23765d99b4b5869973f004457ebd7aa7d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -54,7 +54,7 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I
|
||||
setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History");
|
||||
setConfigWidgetDisplayName(tr("Autotools Manager"));
|
||||
|
||||
setInitializer([this] {
|
||||
setInitializer([this](const BuildInfo &) {
|
||||
// ### Build Steps Build ###
|
||||
// autogen.sh or autoreconf
|
||||
QFile autogenFile(target()->project()->projectDirectory().toString() + "/autogen.sh");
|
||||
|
@@ -89,7 +89,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
||||
displayName(),
|
||||
BuildConfiguration::Unknown));
|
||||
|
||||
setInitializer([this, target] {
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
|
||||
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
|
||||
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
||||
@@ -147,14 +148,14 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
||||
|
||||
cleanSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||
|
||||
if (initialBuildDirectory().isEmpty()) {
|
||||
if (info.buildDirectory.isEmpty()) {
|
||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||
target->kit(),
|
||||
initialDisplayName(),
|
||||
initialBuildType()));
|
||||
info.displayName,
|
||||
info.buildType));
|
||||
}
|
||||
auto info = extraInfo().value<CMakeExtraBuildInfo>();
|
||||
setConfigurationForCMake(info.configuration);
|
||||
auto cinfo = info.extraInfo.value<CMakeExtraBuildInfo>();
|
||||
setConfigurationForCMake(cinfo.configuration);
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -55,7 +55,7 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
|
||||
setConfigWidgetDisplayName(tr("Generic Manager"));
|
||||
setBuildDirectoryHistoryCompleter("Generic.BuildDir.History");
|
||||
|
||||
setInitializer([this] {
|
||||
setInitializer([this](const BuildInfo &) {
|
||||
buildSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||
cleanSteps()->appendStep(Constants::GENERIC_MS_ID);
|
||||
updateCacheAndEmitEnvironmentChanged();
|
||||
|
@@ -54,9 +54,9 @@ NimbleBuildConfiguration::NimbleBuildConfiguration(Target *target, Core::Id id)
|
||||
setConfigWidgetHasFrame(true);
|
||||
setBuildDirectorySettingsKey("Nim.NimbleBuildConfiguration.BuildDirectory");
|
||||
|
||||
setInitializer([this] {
|
||||
setInitializer([this](const BuildInfo &info) {
|
||||
|
||||
m_buildType = initialBuildType();
|
||||
m_buildType = info.buildType;
|
||||
|
||||
setBuildDirectory(project()->projectDirectory());
|
||||
|
||||
|
@@ -73,7 +73,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
|
||||
setBuildDirectorySettingsKey("Nim.NimBuildConfiguration.BuildDirectory");
|
||||
|
||||
|
||||
setInitializer([this, target] {
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
// Create the build configuration and initialize it from build info
|
||||
setBuildDirectory(defaultBuildDirectory(target->kit(),
|
||||
project()->projectFilePath(),
|
||||
@@ -84,7 +84,7 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Core::Id id)
|
||||
{
|
||||
auto nimCompilerBuildStep = new NimCompilerBuildStep(buildSteps());
|
||||
NimCompilerBuildStep::DefaultBuildOptions defaultOption;
|
||||
switch (initialBuildType()) {
|
||||
switch (info.buildType) {
|
||||
case BuildConfiguration::Release:
|
||||
defaultOption = NimCompilerBuildStep::DefaultBuildOptions::Release;
|
||||
break;
|
||||
|
@@ -84,13 +84,9 @@ public:
|
||||
QString m_configWidgetDisplayName;
|
||||
bool m_configWidgetHasFrame = false;
|
||||
|
||||
std::function<void()> m_initializer;
|
||||
|
||||
// FIXME: Remove.
|
||||
BuildConfiguration::BuildType m_initialBuildType = BuildConfiguration::Unknown;
|
||||
Utils::FilePath m_initialBuildDirectory;
|
||||
QString m_initialDisplayName;
|
||||
QVariant m_extraInfo;
|
||||
std::function<void(const BuildInfo &)> m_initializer;
|
||||
};
|
||||
|
||||
} // Internal
|
||||
@@ -190,17 +186,14 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
|
||||
setBuildDirectory(info.buildDirectory);
|
||||
|
||||
d->m_initialBuildType = info.buildType;
|
||||
d->m_initialDisplayName = info.displayName;
|
||||
d->m_initialBuildDirectory = info.buildDirectory;
|
||||
d->m_extraInfo = info.extraInfo;
|
||||
|
||||
acquaintAspects();
|
||||
|
||||
if (d->m_initializer)
|
||||
d->m_initializer();
|
||||
d->m_initializer(info);
|
||||
}
|
||||
|
||||
void BuildConfiguration::setInitializer(const std::function<void ()> &initializer)
|
||||
void BuildConfiguration::setInitializer(const std::function<void(const BuildInfo &)> &initializer)
|
||||
{
|
||||
d->m_initializer = initializer;
|
||||
}
|
||||
@@ -318,16 +311,6 @@ void BuildConfiguration::emitBuildDirectoryChanged()
|
||||
}
|
||||
}
|
||||
|
||||
QString BuildConfiguration::initialDisplayName() const
|
||||
{
|
||||
return d->m_initialDisplayName;
|
||||
}
|
||||
|
||||
QVariant BuildConfiguration::extraInfo() const
|
||||
{
|
||||
return d->m_extraInfo;
|
||||
}
|
||||
|
||||
ProjectExplorer::BuildDirectoryAspect *BuildConfiguration::buildDirectoryAspect() const
|
||||
{
|
||||
return d->m_buildDirectoryAspect;
|
||||
@@ -437,16 +420,6 @@ BuildConfiguration::BuildType BuildConfiguration::buildType() const
|
||||
return d->m_initialBuildType;
|
||||
}
|
||||
|
||||
BuildConfiguration::BuildType BuildConfiguration::initialBuildType() const
|
||||
{
|
||||
return d->m_initialBuildType;
|
||||
}
|
||||
|
||||
FilePath BuildConfiguration::initialBuildDirectory() const
|
||||
{
|
||||
return d->m_initialBuildDirectory;
|
||||
}
|
||||
|
||||
QString BuildConfiguration::buildTypeName(BuildConfiguration::BuildType type)
|
||||
{
|
||||
switch (type) {
|
||||
|
@@ -98,11 +98,6 @@ public:
|
||||
};
|
||||
virtual BuildType buildType() const;
|
||||
|
||||
BuildType initialBuildType() const; // FIXME: Remove.
|
||||
Utils::FilePath initialBuildDirectory() const; // FIXME: Remove.
|
||||
QString initialDisplayName() const; // FIXME: Remove.
|
||||
QVariant extraInfo() const; // FIXME: Remove.
|
||||
|
||||
static QString buildTypeName(BuildType type);
|
||||
|
||||
bool isActive() const override;
|
||||
@@ -127,7 +122,7 @@ signals:
|
||||
void buildTypeChanged();
|
||||
|
||||
protected:
|
||||
void setInitializer(const std::function<void()> &initializer);
|
||||
void setInitializer(const std::function<void(const BuildInfo &info)> &initializer);
|
||||
|
||||
private:
|
||||
void emitBuildDirectoryChanged();
|
||||
|
@@ -80,19 +80,19 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
||||
{
|
||||
setConfigWidgetHasFrame(true);
|
||||
|
||||
setInitializer([this, target] {
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
const Kit *kit = target->kit();
|
||||
QVariantMap configData = extraInfo().value<QVariantMap>();
|
||||
QVariantMap configData = info.extraInfo.value<QVariantMap>();
|
||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||
(initialBuildType() == BuildConfiguration::Debug)
|
||||
(info.buildType == BuildConfiguration::Debug)
|
||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||
|
||||
Utils::FilePath buildDir = initialBuildDirectory();
|
||||
FilePath buildDir = info.buildDirectory;
|
||||
if (buildDir.isEmpty())
|
||||
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
||||
kit, initialDisplayName(),
|
||||
initialBuildType());
|
||||
kit, info.displayName,
|
||||
buildType());
|
||||
setBuildDirectory(buildDir);
|
||||
|
||||
// Add the build configuration.
|
||||
@@ -100,7 +100,7 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
||||
QString configName = bd.take("configName").toString();
|
||||
if (configName.isEmpty()) {
|
||||
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
|
||||
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
||||
+ FileUtils::fileSystemFriendlyName(info.displayName);
|
||||
}
|
||||
|
||||
const QString kitName = kit->displayName();
|
||||
|
@@ -109,18 +109,18 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
||||
setConfigWidgetHasFrame(true);
|
||||
m_buildSystem = new QmakeBuildSystem(this);
|
||||
|
||||
setInitializer([this, target] {
|
||||
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 = extraInfo().value<QmakeExtraBuildInfo>();
|
||||
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
|
||||
BaseQtVersion *version = QtKitAspect::qtVersion(target->kit());
|
||||
|
||||
BaseQtVersion::QmakeBuildConfigs config = version->defaultBuildConfig();
|
||||
if (initialBuildType() == BuildConfiguration::Debug)
|
||||
if (info.buildType == BuildConfiguration::Debug)
|
||||
config |= BaseQtVersion::DebugBuild;
|
||||
else
|
||||
config &= ~BaseQtVersion::DebugBuild;
|
||||
@@ -135,11 +135,11 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Core::Id id)
|
||||
|
||||
setQMakeBuildConfiguration(config);
|
||||
|
||||
FilePath directory = initialBuildDirectory();
|
||||
FilePath directory = info.buildDirectory;
|
||||
if (directory.isEmpty()) {
|
||||
directory = shadowBuildDirectory(target->project()->projectFilePath(),
|
||||
target->kit(), initialDisplayName(),
|
||||
initialBuildType());
|
||||
target->kit(), info.displayName,
|
||||
info.buildType);
|
||||
}
|
||||
|
||||
setBuildDirectory(directory);
|
||||
|
Reference in New Issue
Block a user