QbsProjectManager: Improve interactive build config creation

- Offer Debug and Release.
- Make sure the qbs config names for two build configs of
  the same type do not clash.

Change-Id: Ia3bcb3243abfc64d71d20344e3bb16f00ba28c0d
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2020-01-27 17:11:33 +01:00
parent b11445429e
commit 6355796f11

View File

@@ -107,11 +107,12 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
} }
const QString kitName = kit->displayName(); const QString kitName = kit->displayName();
const QByteArray kitHash = QCryptographicHash::hash(kitName.toUtf8(), QCryptographicHash::Sha1); const QByteArray hash = QCryptographicHash::hash((kitName + info.displayName).toUtf8(),
QCryptographicHash::Sha1);
const QString uniqueConfigName = configName const QString uniqueConfigName = configName
+ '_' + kit->fileSystemFriendlyName().left(8) + '_' + kit->fileSystemFriendlyName().left(8)
+ '_' + kitHash.toHex().left(16); + '_' + hash.toHex().left(16);
m_configurationName->setValue(uniqueConfigName); m_configurationName->setValue(uniqueConfigName);
@@ -427,7 +428,6 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
QList<BuildInfo> result; QList<BuildInfo> result;
if (forSetup) { if (forSetup) {
BuildInfo info = createBuildInfo(BuildConfiguration::Debug); BuildInfo info = createBuildInfo(BuildConfiguration::Debug);
//: The name of the debug build configuration created by default for a qbs project. //: The name of the debug build configuration created by default for a qbs project.
info.displayName = BuildConfiguration::tr("Debug"); info.displayName = BuildConfiguration::tr("Debug");
@@ -443,11 +443,9 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
const QString rel = QbsBuildConfiguration::tr("Release", "Shadow build directory suffix"); const QString rel = QbsBuildConfiguration::tr("Release", "Shadow build directory suffix");
info.buildDirectory = defaultBuildDirectory(projectPath, k, rel, info.buildType); info.buildDirectory = defaultBuildDirectory(projectPath, k, rel, info.buildType);
result << info; result << info;
} else { } else {
result << createBuildInfo(BuildConfiguration::Debug); result << createBuildInfo(BuildConfiguration::Debug);
result << createBuildInfo(BuildConfiguration::Release);
} }
return result; return result;