ProjectExplorer: Introduce SeparateDebugInfoAspect

... and use it in the qbs build configuration.

Change-Id: Ie9002e5c43d1d43c81dc30a1fcbb29a5a1a25705
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-11-25 15:07:21 +01:00
parent ca5ed8879f
commit e63444b45d
6 changed files with 54 additions and 2 deletions

View File

@@ -27,4 +27,10 @@
namespace ProjectExplorer { namespace ProjectExplorer {
SeparateDebugInfoAspect::SeparateDebugInfoAspect()
{
setDisplayName(tr("Separate Debug Info"));
setSettingsKey("SeparateDebugInfo");
}
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -30,4 +30,11 @@
namespace ProjectExplorer { namespace ProjectExplorer {
class PROJECTEXPLORER_EXPORT SeparateDebugInfoAspect : public BaseTriStateAspect
{
Q_OBJECT
public:
SeparateDebugInfoAspect();
};
} // namespace ProjectExplorer } // namespace ProjectExplorer

View File

@@ -87,6 +87,10 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id)
connect(m_configurationName, &BaseStringAspect::changed, connect(m_configurationName, &BaseStringAspect::changed,
this, &BuildConfiguration::buildDirectoryChanged); this, &BuildConfiguration::buildDirectoryChanged);
const auto separateDebugInfoAspect = addAspect<SeparateDebugInfoAspect>();
connect(separateDebugInfoAspect, &SeparateDebugInfoAspect::changed,
this, &QbsBuildConfiguration::qbsConfigurationChanged);
const auto qmlDebuggingAspect = addAspect<QtSupport::QmlDebuggingAspect>(); const auto qmlDebuggingAspect = addAspect<QtSupport::QmlDebuggingAspect>();
qmlDebuggingAspect->setKit(target->kit()); qmlDebuggingAspect->setKit(target->kit());
connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed, connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed,
@@ -382,6 +386,11 @@ BaseTriStateAspect::Value QbsBuildConfiguration::qmlDebuggingSetting() const
return aspect<QtSupport::QmlDebuggingAspect>()->setting(); return aspect<QtSupport::QmlDebuggingAspect>()->setting();
} }
BaseTriStateAspect::Value QbsBuildConfiguration::separateDebugInfoSetting() const
{
return aspect<SeparateDebugInfoAspect>()->setting();
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// QbsBuildConfigurationFactory: // QbsBuildConfigurationFactory:
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@@ -29,6 +29,7 @@
#include "qbsproject.h" #include "qbsproject.h"
#include <projectexplorer/buildaspects.h>
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
#include <qtsupport/qtbuildaspects.h> #include <qtsupport/qtbuildaspects.h>
@@ -78,6 +79,8 @@ public:
bool isQmlDebuggingEnabled() const; bool isQmlDebuggingEnabled() const;
QtSupport::QmlDebuggingAspect::Value qmlDebuggingSetting() const; QtSupport::QmlDebuggingAspect::Value qmlDebuggingSetting() const;
ProjectExplorer::SeparateDebugInfoAspect::Value separateDebugInfoSetting() const;
signals: signals:
void qbsConfigurationChanged(); void qbsConfigurationChanged();

View File

@@ -212,8 +212,20 @@ void QbsBuildStep::doCancel()
QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) const QVariantMap QbsBuildStep::qbsConfiguration(VariableHandling variableHandling) const
{ {
QVariantMap config = m_qbsConfiguration; QVariantMap config = m_qbsConfiguration;
const auto qbsBuildConfig = static_cast<QbsBuildConfiguration *>(buildConfiguration());
config.insert(Constants::QBS_FORCE_PROBES_KEY, m_forceProbes); config.insert(Constants::QBS_FORCE_PROBES_KEY, m_forceProbes);
switch (static_cast<QbsBuildConfiguration *>(buildConfiguration())->qmlDebuggingSetting()) { switch (qbsBuildConfig->separateDebugInfoSetting()) {
case SeparateDebugInfoAspect::Value::Enabled:
config.insert(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY, true);
break;
case SeparateDebugInfoAspect::Value::Disabled:
config.insert(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY, false);
break;
default:
config.remove(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY);
break;
}
switch (qbsBuildConfig->qmlDebuggingSetting()) {
case QtSupport::QmlDebuggingAspect::Value::Enabled: case QtSupport::QmlDebuggingAspect::Value::Enabled:
config.insert(Constants::QBS_CONFIG_QUICK_DEBUG_KEY, true); config.insert(Constants::QBS_CONFIG_QUICK_DEBUG_KEY, true);
break; break;
@@ -674,6 +686,16 @@ void QbsBuildStepConfigWidget::updateState()
command += ' ' + m_propertyCache.at(i).name + ':' + m_propertyCache.at(i).effectiveValue; command += ' ' + m_propertyCache.at(i).name + ':' + m_propertyCache.at(i).effectiveValue;
} }
switch (qbsBuildConfig->separateDebugInfoSetting()) {
case SeparateDebugInfoAspect::Value::Enabled:
command.append(' ').append(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY).append(":true");
break;
case SeparateDebugInfoAspect::Value::Disabled:
command.append(' ').append(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY).append(":false");
break;
default:
break;
}
switch (qbsBuildConfig->qmlDebuggingSetting()) { switch (qbsBuildConfig->qmlDebuggingSetting()) {
case QtSupport::QmlDebuggingAspect::Value::Enabled: case QtSupport::QmlDebuggingAspect::Value::Enabled:
command.append(' ').append(Constants::QBS_CONFIG_QUICK_DEBUG_KEY).append(":true"); command.append(' ').append(Constants::QBS_CONFIG_QUICK_DEBUG_KEY).append(":true");
@@ -698,6 +720,7 @@ void QbsBuildStepConfigWidget::updatePropertyEdit(const QVariantMap &data)
editable.remove(Constants::QBS_CONFIG_PROFILE_KEY); editable.remove(Constants::QBS_CONFIG_PROFILE_KEY);
editable.remove(Constants::QBS_CONFIG_VARIANT_KEY); editable.remove(Constants::QBS_CONFIG_VARIANT_KEY);
editable.remove(Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY); // For existing .user files editable.remove(Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY); // For existing .user files
editable.remove(Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY);
editable.remove(Constants::QBS_CONFIG_QUICK_DEBUG_KEY); editable.remove(Constants::QBS_CONFIG_QUICK_DEBUG_KEY);
editable.remove(Constants::QBS_FORCE_PROBES_KEY); editable.remove(Constants::QBS_FORCE_PROBES_KEY);
editable.remove(Constants::QBS_INSTALL_ROOT_KEY); editable.remove(Constants::QBS_INSTALL_ROOT_KEY);
@@ -799,6 +822,7 @@ void QbsBuildStepConfigWidget::applyCachedProperties()
tmp.value(Constants::QBS_CONFIG_VARIANT_KEY)); tmp.value(Constants::QBS_CONFIG_VARIANT_KEY));
const QStringList additionalSpecialKeys({Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY, const QStringList additionalSpecialKeys({Constants::QBS_CONFIG_DECLARATIVE_DEBUG_KEY,
Constants::QBS_CONFIG_QUICK_DEBUG_KEY, Constants::QBS_CONFIG_QUICK_DEBUG_KEY,
Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY,
Constants::QBS_INSTALL_ROOT_KEY}); Constants::QBS_INSTALL_ROOT_KEY});
for (const QString &key : additionalSpecialKeys) { for (const QString &key : additionalSpecialKeys) {
const auto it = tmp.constFind(key); const auto it = tmp.constFind(key);
@@ -840,7 +864,9 @@ bool QbsBuildStepConfigWidget::validateProperties(Utils::FancyLineEdit *edit, QS
const QString propertyName = rawArg.left(pos); const QString propertyName = rawArg.left(pos);
static const QStringList specialProperties{ static const QStringList specialProperties{
Constants::QBS_CONFIG_PROFILE_KEY, Constants::QBS_CONFIG_VARIANT_KEY, Constants::QBS_CONFIG_PROFILE_KEY, Constants::QBS_CONFIG_VARIANT_KEY,
Constants::QBS_CONFIG_QUICK_DEBUG_KEY, Constants::QBS_INSTALL_ROOT_KEY}; Constants::QBS_CONFIG_QUICK_DEBUG_KEY, Constants::QBS_INSTALL_ROOT_KEY,
Constants::QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY,
};
if (specialProperties.contains(propertyName)) { if (specialProperties.contains(propertyName)) {
if (errorMessage) { if (errorMessage) {
*errorMessage = tr("Property \"%1\" cannot be set here. " *errorMessage = tr("Property \"%1\" cannot be set here. "

View File

@@ -69,6 +69,7 @@ const char QBS_CONFIG_PROFILE_KEY[] = "qbs.profile";
const char QBS_INSTALL_ROOT_KEY[] = "qbs.installRoot"; const char QBS_INSTALL_ROOT_KEY[] = "qbs.installRoot";
const char QBS_CONFIG_DECLARATIVE_DEBUG_KEY[] = "modules.Qt.declarative.qmlDebugging"; const char QBS_CONFIG_DECLARATIVE_DEBUG_KEY[] = "modules.Qt.declarative.qmlDebugging";
const char QBS_CONFIG_QUICK_DEBUG_KEY[] = "modules.Qt.quick.qmlDebugging"; const char QBS_CONFIG_QUICK_DEBUG_KEY[] = "modules.Qt.quick.qmlDebugging";
const char QBS_CONFIG_SEPARATE_DEBUG_INFO_KEY[] = "modules.cpp.separateDebugInformation";
const char QBS_FORCE_PROBES_KEY[] = "qbspm.forceProbes"; const char QBS_FORCE_PROBES_KEY[] = "qbspm.forceProbes";
// Icons: // Icons: