diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 50288ee2ff6..8bed2fb1bd5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -1187,6 +1187,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) addAspect(); addAspect(); + addAspect(this); appendInitialBuildStep(Constants::CMAKE_BUILD_STEP_ID); appendInitialCleanStep(Constants::CMAKE_BUILD_STEP_ID); @@ -1286,8 +1287,6 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) setCMakeBuildType(info.typeName); }); - const auto qmlDebuggingAspect = addAspect(); - qmlDebuggingAspect->setKit(target->kit()); setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(target->kit())); } diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index db42f15db18..2ddd805ab79 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -131,13 +131,11 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Utils::Id id) connect(separateDebugInfoAspect, &SeparateDebugInfoAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); - const auto qmlDebuggingAspect = addAspect(); - qmlDebuggingAspect->setKit(target->kit()); + const auto qmlDebuggingAspect = addAspect(this); connect(qmlDebuggingAspect, &QtSupport::QmlDebuggingAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); - const auto qtQuickCompilerAspect = addAspect(qmlDebuggingAspect); - qtQuickCompilerAspect->setKit(target->kit()); + const auto qtQuickCompilerAspect = addAspect(this); connect(qtQuickCompilerAspect, &QtSupport::QtQuickCompilerAspect::changed, this, &QbsBuildConfiguration::qbsConfigurationChanged); diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index 9bd5ec16c37..bcce50dbd88 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -189,16 +189,14 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Utils::Id id) qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); }); - const auto qmlDebuggingAspect = addAspect(); - qmlDebuggingAspect->setKit(target->kit()); + const auto qmlDebuggingAspect = addAspect(this); connect(qmlDebuggingAspect, &QmlDebuggingAspect::changed, this, [this] { emit qmlDebuggingChanged(); emit qmakeBuildConfigurationChanged(); qmakeBuildSystem()->scheduleUpdateAllNowOrLater(); }); - const auto qtQuickCompilerAspect = addAspect(qmlDebuggingAspect); - qtQuickCompilerAspect->setKit(target->kit()); + const auto qtQuickCompilerAspect = addAspect(this); connect(qtQuickCompilerAspect, &QtQuickCompilerAspect::changed, this, [this] { emit useQtQuickCompilerChanged(); emit qmakeBuildConfigurationChanged(); diff --git a/src/plugins/qtsupport/qtbuildaspects.cpp b/src/plugins/qtsupport/qtbuildaspects.cpp index 003ec03c9e5..d1cbfbf8300 100644 --- a/src/plugins/qtsupport/qtbuildaspects.cpp +++ b/src/plugins/qtsupport/qtbuildaspects.cpp @@ -27,6 +27,7 @@ #include "baseqtversion.h" +#include #include #include #include @@ -42,7 +43,8 @@ using namespace Utils; namespace QtSupport { -QmlDebuggingAspect::QmlDebuggingAspect() +QmlDebuggingAspect::QmlDebuggingAspect(BuildConfiguration *buildConfig) + : m_buildConfig(buildConfig) { setSettingsKey("EnableQmlDebugging"); setDisplayName(tr("QML debugging and profiling:")); @@ -58,7 +60,9 @@ void QmlDebuggingAspect::addToLayout(LayoutBuilder &builder) builder.addRow({{}, warningLabel}); const auto changeHandler = [this, warningLabel] { QString warningText; - const bool supported = m_kit && QtVersion::isQmlDebuggingSupported(m_kit, &warningText); + QTC_ASSERT(m_buildConfig, return); + Kit *kit = m_buildConfig->kit(); + const bool supported = kit && QtVersion::isQmlDebuggingSupported(kit, &warningText); if (!supported) { setValue(TriState::Default); } else if (value() == TriState::Enabled) { @@ -76,8 +80,8 @@ void QmlDebuggingAspect::addToLayout(LayoutBuilder &builder) changeHandler(); } -QtQuickCompilerAspect::QtQuickCompilerAspect(QmlDebuggingAspect *qmlAspect) - : m_qmlDebuggingAspect(qmlAspect) +QtQuickCompilerAspect::QtQuickCompilerAspect(BuildConfiguration *buildConfig) + : m_buildConfig(buildConfig) { setSettingsKey("QtQuickCompiler"); setDisplayName(tr("Qt Quick Compiler:")); @@ -93,13 +97,17 @@ void QtQuickCompilerAspect::addToLayout(LayoutBuilder &builder) builder.addRow({{}, warningLabel}); const auto changeHandler = [this, warningLabel] { QString warningText; - const bool supported = m_kit - && QtVersion::isQtQuickCompilerSupported(m_kit, &warningText); + QTC_ASSERT(m_buildConfig, return); + Kit *kit = m_buildConfig->kit(); + const bool supported = kit + && QtVersion::isQtQuickCompilerSupported(kit, &warningText); if (!supported) setValue(TriState::Default); - if (value() == TriState::Enabled - && m_qmlDebuggingAspect && m_qmlDebuggingAspect->value() == TriState::Enabled) { - warningText = tr("Disables QML debugging. QML profiling will still work."); + if (value() == TriState::Enabled) { + if (auto qmlDebuggingAspect = m_buildConfig->aspect()) { + if (qmlDebuggingAspect->value() == TriState::Enabled) + warningText = tr("Disables QML debugging. QML profiling will still work."); + } } warningLabel->setText(warningText); setVisible(supported); @@ -110,8 +118,8 @@ void QtQuickCompilerAspect::addToLayout(LayoutBuilder &builder) connect(KitManager::instance(), &KitManager::kitsChanged, warningLabel, changeHandler); connect(this, &QmlDebuggingAspect::changed, warningLabel, changeHandler); connect(this, &QtQuickCompilerAspect::changed, warningLabel, changeHandler); - if (m_qmlDebuggingAspect) - connect(m_qmlDebuggingAspect, &QmlDebuggingAspect::changed, warningLabel, changeHandler); + if (auto qmlDebuggingAspect = m_buildConfig->aspect()) + connect(qmlDebuggingAspect, &QmlDebuggingAspect::changed, warningLabel, changeHandler); changeHandler(); } diff --git a/src/plugins/qtsupport/qtbuildaspects.h b/src/plugins/qtsupport/qtbuildaspects.h index 8e84723914f..8434039d089 100644 --- a/src/plugins/qtsupport/qtbuildaspects.h +++ b/src/plugins/qtsupport/qtbuildaspects.h @@ -29,36 +29,34 @@ #include -namespace ProjectExplorer { class Kit; } +namespace ProjectExplorer { class BuildConfiguration; } namespace QtSupport { class QTSUPPORT_EXPORT QmlDebuggingAspect : public Utils::TriStateAspect { Q_OBJECT -public: - QmlDebuggingAspect(); - void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; } +public: + explicit QmlDebuggingAspect(ProjectExplorer::BuildConfiguration *buildConfig); + void addToLayout(Utils::LayoutBuilder &builder) override; private: - const ProjectExplorer::Kit *m_kit = nullptr; + const ProjectExplorer::BuildConfiguration *m_buildConfig = nullptr; }; class QTSUPPORT_EXPORT QtQuickCompilerAspect : public Utils::TriStateAspect { Q_OBJECT -public: - QtQuickCompilerAspect(QmlDebuggingAspect *qmlAspect); - void setKit(const ProjectExplorer::Kit *kit) { m_kit = kit; } +public: + QtQuickCompilerAspect(ProjectExplorer::BuildConfiguration *buildConfig); private: void addToLayout(Utils::LayoutBuilder &builder) override; - const ProjectExplorer::Kit *m_kit = nullptr; - const QmlDebuggingAspect *m_qmlDebuggingAspect = nullptr; + const ProjectExplorer::BuildConfiguration *m_buildConfig = nullptr; }; } // namespace QtSupport