forked from qt-creator/qt-creator
ProjectExplorer: Use function object for special build config init
Change-Id: I5da0f28ee1a64f8d9a3145f059019be702bee463 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -80,6 +80,47 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
|
||||
{
|
||||
setConfigWidgetHasFrame(true);
|
||||
|
||||
setInitializer([this, target] {
|
||||
const Kit *kit = target->kit();
|
||||
QVariantMap configData = extraInfo().value<QVariantMap>();
|
||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||
(initialBuildType() == BuildConfiguration::Debug)
|
||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||
|
||||
Utils::FilePath buildDir = initialBuildDirectory();
|
||||
if (buildDir.isEmpty())
|
||||
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
||||
kit, initialDisplayName(),
|
||||
initialBuildType());
|
||||
setBuildDirectory(buildDir);
|
||||
|
||||
// Add the build configuration.
|
||||
QVariantMap bd = configData;
|
||||
QString configName = bd.take("configName").toString();
|
||||
if (configName.isEmpty()) {
|
||||
configName = "qtc_" + kit->fileSystemFriendlyName() + '_'
|
||||
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
||||
}
|
||||
|
||||
const QString kitName = kit->displayName();
|
||||
const QByteArray kitHash = QCryptographicHash::hash(kitName.toUtf8(), QCryptographicHash::Sha1);
|
||||
|
||||
const QString uniqueConfigName = configName
|
||||
+ '_' + kit->fileSystemFriendlyName().left(8)
|
||||
+ '_' + kitHash.toHex().left(16);
|
||||
|
||||
m_configurationName->setValue(uniqueConfigName);
|
||||
|
||||
auto bs = new QbsBuildStep(buildSteps());
|
||||
bs->setQbsConfiguration(bd);
|
||||
buildSteps()->appendStep(bs);
|
||||
|
||||
cleanSteps()->appendStep(Constants::QBS_CLEANSTEP_ID);
|
||||
|
||||
emit qbsConfigurationChanged();
|
||||
});
|
||||
|
||||
m_configurationName = addAspect<BaseStringAspect>();
|
||||
m_configurationName->setLabelText(tr("Configuration name:"));
|
||||
m_configurationName->setSettingsKey("Qbs.configName");
|
||||
@@ -124,48 +165,6 @@ BuildSystem *QbsBuildConfiguration::buildSystem() const
|
||||
return m_buildSystem;
|
||||
}
|
||||
|
||||
void QbsBuildConfiguration::initialize()
|
||||
{
|
||||
QVariantMap configData = extraInfo().value<QVariantMap>();
|
||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||
(initialBuildType() == BuildConfiguration::Debug)
|
||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||
|
||||
Utils::FilePath buildDir = initialBuildDirectory();
|
||||
if (buildDir.isEmpty())
|
||||
buildDir = defaultBuildDirectory(target()->project()->projectFilePath(),
|
||||
target()->kit(), initialDisplayName(),
|
||||
initialBuildType());
|
||||
setBuildDirectory(buildDir);
|
||||
|
||||
// Add the build configuration.
|
||||
QVariantMap bd = configData;
|
||||
QString configName = bd.take("configName").toString();
|
||||
if (configName.isEmpty()) {
|
||||
configName = "qtc_" + target()->kit()->fileSystemFriendlyName() + '_'
|
||||
+ Utils::FileUtils::fileSystemFriendlyName(initialDisplayName());
|
||||
}
|
||||
|
||||
const Kit *kit = target()->kit();
|
||||
const QString kitName = kit->displayName();
|
||||
const QByteArray kitHash = QCryptographicHash::hash(kitName.toUtf8(), QCryptographicHash::Sha1);
|
||||
|
||||
const QString uniqueConfigName = configName
|
||||
+ '_' + kit->fileSystemFriendlyName().left(8)
|
||||
+ '_' + kitHash.toHex().left(16);
|
||||
|
||||
m_configurationName->setValue(uniqueConfigName);
|
||||
|
||||
auto bs = new QbsBuildStep(buildSteps());
|
||||
bs->setQbsConfiguration(bd);
|
||||
buildSteps()->appendStep(bs);
|
||||
|
||||
cleanSteps()->appendStep(Constants::QBS_CLEANSTEP_ID);
|
||||
|
||||
emit qbsConfigurationChanged();
|
||||
}
|
||||
|
||||
void QbsBuildConfiguration::triggerReparseIfActive()
|
||||
{
|
||||
if (isActive())
|
||||
|
||||
@@ -57,7 +57,6 @@ class QbsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
||||
|
||||
public:
|
||||
ProjectExplorer::BuildSystem *buildSystem() const final;
|
||||
void initialize() final;
|
||||
|
||||
QbsBuildStep *qbsStep() const;
|
||||
QVariantMap qbsConfiguration() const;
|
||||
|
||||
Reference in New Issue
Block a user