QbsProjectManager: Add UI support for "profile" build variant

Fixes: QTCREATORBUG-27206
Change-Id: I086e90173d71927d463498c31a567c1bc8089bd3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2022-10-26 15:49:16 +02:00
parent 074126cf47
commit c5db642791
4 changed files with 39 additions and 12 deletions

View File

@@ -64,11 +64,17 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
setInitializer([this, target](const BuildInfo &info) { setInitializer([this, target](const BuildInfo &info) {
const Kit *kit = target->kit(); const Kit *kit = target->kit();
QVariantMap configData = info.extraInfo.value<QVariantMap>(); QVariantMap configData = info.extraInfo.value<QVariantMap>();
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY), const QString buildVariant = [](BuildConfiguration::BuildType buildType) -> QString {
(info.buildType == BuildConfiguration::Debug) switch (buildType) {
? QLatin1String(Constants::QBS_VARIANT_DEBUG) case BuildConfiguration::Release: return Constants::QBS_VARIANT_RELEASE;
: QLatin1String(Constants::QBS_VARIANT_RELEASE)); case BuildConfiguration::Profile: return Constants::QBS_VARIANT_PROFILING;
case BuildConfiguration::Debug:
case BuildConfiguration::Unknown:
break;
}
return Constants::QBS_VARIANT_DEBUG;
}(info.buildType);
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY), buildVariant);
FilePath buildDir = info.buildDirectory; FilePath buildDir = info.buildDirectory;
if (buildDir.isEmpty()) if (buildDir.isEmpty())
buildDir = defaultBuildDirectory(target->project()->projectFilePath(), buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
@@ -208,6 +214,8 @@ BuildConfiguration::BuildType QbsBuildConfiguration::buildType() const
return Debug; return Debug;
if (variant == QLatin1String(Constants::QBS_VARIANT_RELEASE)) if (variant == QLatin1String(Constants::QBS_VARIANT_RELEASE))
return Release; return Release;
if (variant == QLatin1String(Constants::QBS_VARIANT_PROFILING))
return Profile;
return Unknown; return Unknown;
} }
@@ -339,9 +347,17 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
const QString rel = QbsProjectManager::Tr::tr("Release", "Shadow build directory suffix"); const QString rel = QbsProjectManager::Tr::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;
info = createBuildInfo(BuildConfiguration::Profile);
info.displayName = ProjectExplorer::Tr::tr("Profile");
//: Non-ASCII characters in directory suffix may cause build issues.
const QString prof = QbsProjectManager::Tr::tr("Profile", "Shadow build directory suffix");
info.buildDirectory = defaultBuildDirectory(projectPath, k, prof, info.buildType);
result << info;
} else { } else {
result << createBuildInfo(BuildConfiguration::Debug); result << createBuildInfo(BuildConfiguration::Debug);
result << createBuildInfo(BuildConfiguration::Release); result << createBuildInfo(BuildConfiguration::Release);
result << createBuildInfo(BuildConfiguration::Profile);
} }
return result; return result;
@@ -352,10 +368,13 @@ BuildInfo QbsBuildConfigurationFactory::createBuildInfo(BuildConfiguration::Buil
{ {
BuildInfo info; BuildInfo info;
info.buildType = type; info.buildType = type;
info.typeName = type == BuildConfiguration::Debug info.typeName = type == BuildConfiguration::Profile
? ProjectExplorer::Tr::tr("Debug") : ProjectExplorer::Tr::tr("Release"); ? ProjectExplorer::Tr::tr("Profiling") : type == BuildConfiguration::Release
? ProjectExplorer::Tr::tr("Release") : ProjectExplorer::Tr::tr("Debug");
QVariantMap config; QVariantMap config;
config.insert("configName", type == BuildConfiguration::Debug ? "Debug" : "Release"); config.insert("configName", type == BuildConfiguration::Release
? "Release" : type == BuildConfiguration::Profile
? "Profile" : "Debug");
info.extraInfo = config; info.extraInfo = config;
return info; return info;
} }

View File

@@ -212,6 +212,8 @@ QbsBuildStep::QbsBuildStep(BuildStepList *bsl, Utils::Id id) :
m_buildVariant->addOption({ProjectExplorer::Tr::tr("Debug"), {}, Constants::QBS_VARIANT_DEBUG}); m_buildVariant->addOption({ProjectExplorer::Tr::tr("Debug"), {}, Constants::QBS_VARIANT_DEBUG});
m_buildVariant->addOption({ProjectExplorer::Tr::tr("Release"), {}, m_buildVariant->addOption({ProjectExplorer::Tr::tr("Release"), {},
Constants::QBS_VARIANT_RELEASE}); Constants::QBS_VARIANT_RELEASE});
m_buildVariant->addOption({ProjectExplorer::Tr::tr("Profile"), {},
Constants::QBS_VARIANT_PROFILING});
m_selectedAbis = addAspect<ArchitecturesAspect>(); m_selectedAbis = addAspect<ArchitecturesAspect>();
m_selectedAbis->setLabelText(QbsProjectManager::Tr::tr("ABIs:")); m_selectedAbis->setLabelText(QbsProjectManager::Tr::tr("ABIs:"));

View File

@@ -4,6 +4,7 @@
#include "qbsprojectimporter.h" #include "qbsprojectimporter.h"
#include "qbspmlogging.h" #include "qbspmlogging.h"
#include "qbsprojectmanagerconstants.h"
#include "qbssession.h" #include "qbssession.h"
#include <coreplugin/documentmanager.h> #include <coreplugin/documentmanager.h>
@@ -24,6 +25,9 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace PEConstants = ProjectExplorer::Constants;
namespace QbsConstants = QbsProjectManager::Constants;
namespace QbsProjectManager::Internal { namespace QbsProjectManager::Internal {
struct BuildGraphData struct BuildGraphData
@@ -178,9 +182,9 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const
return createTemporaryKit(qtVersionData,[this, bgData](Kit *k) -> void { return createTemporaryKit(qtVersionData,[this, bgData](Kit *k) -> void {
QList<ToolChainData> tcData; QList<ToolChainData> tcData;
if (!bgData->cxxCompilerPath.isEmpty()) if (!bgData->cxxCompilerPath.isEmpty())
tcData << findOrCreateToolChains({bgData->cxxCompilerPath, Constants::CXX_LANGUAGE_ID}); tcData << findOrCreateToolChains({bgData->cxxCompilerPath, PEConstants::CXX_LANGUAGE_ID});
if (!bgData->cCompilerPath.isEmpty()) if (!bgData->cCompilerPath.isEmpty())
tcData << findOrCreateToolChains({bgData->cCompilerPath, Constants::C_LANGUAGE_ID}); tcData << findOrCreateToolChains({bgData->cCompilerPath, PEConstants::C_LANGUAGE_ID});
for (const ToolChainData &tc : std::as_const(tcData)) { for (const ToolChainData &tc : std::as_const(tcData)) {
if (!tc.tcs.isEmpty()) if (!tc.tcs.isEmpty())
ToolChainKitAspect::setToolChain(k, tc.tcs.first()); ToolChainKitAspect::setToolChain(k, tc.tcs.first());
@@ -194,8 +198,9 @@ const QList<BuildInfo> QbsProjectImporter::buildInfoList(void *directoryData) co
const auto * const bgData = static_cast<BuildGraphData *>(directoryData); const auto * const bgData = static_cast<BuildGraphData *>(directoryData);
BuildInfo info; BuildInfo info;
info.displayName = bgData->bgFilePath.completeBaseName(); info.displayName = bgData->bgFilePath.completeBaseName();
info.buildType = bgData->buildVariant == "debug" info.buildType = bgData->buildVariant == QbsConstants::QBS_VARIANT_PROFILING
? BuildConfiguration::Debug : BuildConfiguration::Release; ? BuildConfiguration::Profile : bgData->buildVariant == QbsConstants::QBS_VARIANT_RELEASE
? BuildConfiguration::Release : BuildConfiguration::Debug;
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir(); info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
QVariantMap config = bgData->overriddenProperties; QVariantMap config = bgData->overriddenProperties;
config.insert("configName", info.displayName); config.insert("configName", info.displayName);

View File

@@ -41,6 +41,7 @@ const char QBS_BC_ID[] = "Qbs.QbsBuildConfiguration";
// QBS strings: // QBS strings:
const char QBS_VARIANT_DEBUG[] = "debug"; const char QBS_VARIANT_DEBUG[] = "debug";
const char QBS_VARIANT_RELEASE[] = "release"; const char QBS_VARIANT_RELEASE[] = "release";
const char QBS_VARIANT_PROFILING[] = "profiling";
const char QBS_CONFIG_VARIANT_KEY[] = "qbs.defaultBuildVariant"; const char QBS_CONFIG_VARIANT_KEY[] = "qbs.defaultBuildVariant";
const char QBS_CONFIG_PROFILE_KEY[] = "qbs.profile"; const char QBS_CONFIG_PROFILE_KEY[] = "qbs.profile";