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) {
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:"));
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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";
|
||||||
|
|||||||
Reference in New Issue
Block a user