forked from qt-creator/qt-creator
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:
@@ -64,11 +64,17 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id)
|
||||
setInitializer([this, target](const BuildInfo &info) {
|
||||
const Kit *kit = target->kit();
|
||||
QVariantMap configData = info.extraInfo.value<QVariantMap>();
|
||||
configData.insert(QLatin1String(Constants::QBS_CONFIG_VARIANT_KEY),
|
||||
(info.buildType == BuildConfiguration::Debug)
|
||||
? QLatin1String(Constants::QBS_VARIANT_DEBUG)
|
||||
: QLatin1String(Constants::QBS_VARIANT_RELEASE));
|
||||
|
||||
const QString buildVariant = [](BuildConfiguration::BuildType buildType) -> QString {
|
||||
switch (buildType) {
|
||||
case BuildConfiguration::Release: return 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;
|
||||
if (buildDir.isEmpty())
|
||||
buildDir = defaultBuildDirectory(target->project()->projectFilePath(),
|
||||
@@ -208,6 +214,8 @@ BuildConfiguration::BuildType QbsBuildConfiguration::buildType() const
|
||||
return Debug;
|
||||
if (variant == QLatin1String(Constants::QBS_VARIANT_RELEASE))
|
||||
return Release;
|
||||
if (variant == QLatin1String(Constants::QBS_VARIANT_PROFILING))
|
||||
return Profile;
|
||||
return Unknown;
|
||||
}
|
||||
|
||||
@@ -339,9 +347,17 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
||||
const QString rel = QbsProjectManager::Tr::tr("Release", "Shadow build directory suffix");
|
||||
info.buildDirectory = defaultBuildDirectory(projectPath, k, rel, info.buildType);
|
||||
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 {
|
||||
result << createBuildInfo(BuildConfiguration::Debug);
|
||||
result << createBuildInfo(BuildConfiguration::Release);
|
||||
result << createBuildInfo(BuildConfiguration::Profile);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -352,10 +368,13 @@ BuildInfo QbsBuildConfigurationFactory::createBuildInfo(BuildConfiguration::Buil
|
||||
{
|
||||
BuildInfo info;
|
||||
info.buildType = type;
|
||||
info.typeName = type == BuildConfiguration::Debug
|
||||
? ProjectExplorer::Tr::tr("Debug") : ProjectExplorer::Tr::tr("Release");
|
||||
info.typeName = type == BuildConfiguration::Profile
|
||||
? ProjectExplorer::Tr::tr("Profiling") : type == BuildConfiguration::Release
|
||||
? ProjectExplorer::Tr::tr("Release") : ProjectExplorer::Tr::tr("Debug");
|
||||
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;
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -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("Release"), {},
|
||||
Constants::QBS_VARIANT_RELEASE});
|
||||
m_buildVariant->addOption({ProjectExplorer::Tr::tr("Profile"), {},
|
||||
Constants::QBS_VARIANT_PROFILING});
|
||||
|
||||
m_selectedAbis = addAspect<ArchitecturesAspect>();
|
||||
m_selectedAbis->setLabelText(QbsProjectManager::Tr::tr("ABIs:"));
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "qbsprojectimporter.h"
|
||||
|
||||
#include "qbspmlogging.h"
|
||||
#include "qbsprojectmanagerconstants.h"
|
||||
#include "qbssession.h"
|
||||
|
||||
#include <coreplugin/documentmanager.h>
|
||||
@@ -24,6 +25,9 @@
|
||||
using namespace ProjectExplorer;
|
||||
using namespace Utils;
|
||||
|
||||
namespace PEConstants = ProjectExplorer::Constants;
|
||||
namespace QbsConstants = QbsProjectManager::Constants;
|
||||
|
||||
namespace QbsProjectManager::Internal {
|
||||
|
||||
struct BuildGraphData
|
||||
@@ -178,9 +182,9 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const
|
||||
return createTemporaryKit(qtVersionData,[this, bgData](Kit *k) -> void {
|
||||
QList<ToolChainData> tcData;
|
||||
if (!bgData->cxxCompilerPath.isEmpty())
|
||||
tcData << findOrCreateToolChains({bgData->cxxCompilerPath, Constants::CXX_LANGUAGE_ID});
|
||||
tcData << findOrCreateToolChains({bgData->cxxCompilerPath, PEConstants::CXX_LANGUAGE_ID});
|
||||
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)) {
|
||||
if (!tc.tcs.isEmpty())
|
||||
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);
|
||||
BuildInfo info;
|
||||
info.displayName = bgData->bgFilePath.completeBaseName();
|
||||
info.buildType = bgData->buildVariant == "debug"
|
||||
? BuildConfiguration::Debug : BuildConfiguration::Release;
|
||||
info.buildType = bgData->buildVariant == QbsConstants::QBS_VARIANT_PROFILING
|
||||
? BuildConfiguration::Profile : bgData->buildVariant == QbsConstants::QBS_VARIANT_RELEASE
|
||||
? BuildConfiguration::Release : BuildConfiguration::Debug;
|
||||
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
|
||||
QVariantMap config = bgData->overriddenProperties;
|
||||
config.insert("configName", info.displayName);
|
||||
|
||||
@@ -41,6 +41,7 @@ const char QBS_BC_ID[] = "Qbs.QbsBuildConfiguration";
|
||||
// QBS strings:
|
||||
const char QBS_VARIANT_DEBUG[] = "debug";
|
||||
const char QBS_VARIANT_RELEASE[] = "release";
|
||||
const char QBS_VARIANT_PROFILING[] = "profiling";
|
||||
|
||||
const char QBS_CONFIG_VARIANT_KEY[] = "qbs.defaultBuildVariant";
|
||||
const char QBS_CONFIG_PROFILE_KEY[] = "qbs.profile";
|
||||
|
||||
Reference in New Issue
Block a user