Qmake: Use aspects more directly in QmakeStep

Change-Id: I3b9d081d9c7cb918d2a475a9dc7554c67d2e1c13
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2023-07-13 19:03:26 +02:00
parent 108c64fc7a
commit 7a4fa635cf
3 changed files with 30 additions and 48 deletions

View File

@@ -104,7 +104,7 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Id id)
appendInitialCleanStep(Constants::MAKESTEP_BS_ID);
setInitializer([this, target](const BuildInfo &info) {
auto qmakeStep = buildSteps()->firstOfType<QMakeStep>();
QMakeStep *qmakeStep = buildSteps()->firstOfType<QMakeStep>();
QTC_ASSERT(qmakeStep, return);
const QmakeExtraBuildInfo qmakeExtra = info.extraInfo.value<QmakeExtraBuildInfo>();
@@ -118,7 +118,7 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Id id)
QString additionalArguments = qmakeExtra.additionalArguments;
if (!additionalArguments.isEmpty())
qmakeStep->setUserArguments(additionalArguments);
qmakeStep->userArguments.setArguments(additionalArguments);
aspect<SeparateDebugInfoAspect>()->setValue(qmakeExtra.config.separateDebugInfo);
aspect<QmlDebuggingAspect>()->setValue(qmakeExtra.config.linkQmlDebuggingQQ2);

View File

@@ -63,23 +63,20 @@ QMakeStep::QMakeStep(BuildStepList *bsl, Id id)
{
setLowPriority();
m_buildType = addAspect<SelectionAspect>();
m_buildType->setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox);
m_buildType->setDisplayName(Tr::tr("qmake build configuration:"));
m_buildType->addOption(Tr::tr("Debug"));
m_buildType->addOption(Tr::tr("Release"));
buildType.setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox);
buildType.setDisplayName(Tr::tr("qmake build configuration:"));
buildType.addOption(Tr::tr("Debug"));
buildType.addOption(Tr::tr("Release"));
m_userArgs = addAspect<ArgumentsAspect>();
m_userArgs->setMacroExpander(macroExpander());
m_userArgs->setSettingsKey(QMAKE_ARGUMENTS_KEY);
m_userArgs->setLabelText(Tr::tr("Additional arguments:"));
userArguments.setMacroExpander(macroExpander());
userArguments.setSettingsKey(QMAKE_ARGUMENTS_KEY);
userArguments.setLabelText(Tr::tr("Additional arguments:"));
m_effectiveCall = addAspect<StringAspect>();
m_effectiveCall->setDisplayStyle(StringAspect::TextEditDisplay);
m_effectiveCall->setLabelText(Tr::tr("Effective qmake call:"));
m_effectiveCall->setReadOnly(true);
m_effectiveCall->setUndoRedoEnabled(false);
m_effectiveCall->setEnabled(true);
effectiveCall.setDisplayStyle(StringAspect::TextEditDisplay);
effectiveCall.setLabelText(Tr::tr("Effective qmake call:"));
effectiveCall.setReadOnly(true);
effectiveCall.setUndoRedoEnabled(false);
effectiveCall.setEnabled(true);
auto updateSummary = [this] {
QtVersion *qtVersion = QtKitAspect::qtVersion(target()->kit());
@@ -316,11 +313,6 @@ void QMakeStep::setForced(bool b)
m_forced = b;
}
void QMakeStep::setUserArguments(const QString &arguments)
{
m_userArgs->setArguments(arguments);
}
QStringList QMakeStep::extraArguments() const
{
return m_extraArgs;
@@ -397,11 +389,6 @@ QStringList QMakeStep::parserArguments()
return result;
}
QString QMakeStep::userArguments() const
{
return m_userArgs->arguments();
}
QString QMakeStep::mkspec() const
{
QString additionalArguments = userArguments();
@@ -439,9 +426,9 @@ QWidget *QMakeStep::createConfigWidget()
abisListWidget = new QListWidget;
Layouting::Form builder;
builder.addRow({m_buildType});
builder.addRow({m_userArgs});
builder.addRow({m_effectiveCall});
builder.addRow({buildType});
builder.addRow({userArguments});
builder.addRow({effectiveCall});
builder.addRow({abisLabel, abisListWidget});
builder.addItem(Layouting::noMargin);
auto widget = builder.emerge();
@@ -452,7 +439,7 @@ QWidget *QMakeStep::createConfigWidget()
updateAbiWidgets();
updateEffectiveQMakeCall();
connect(m_userArgs, &BaseAspect::changed, widget, [this] {
connect(&userArguments, &BaseAspect::changed, widget, [this] {
updateAbiWidgets();
updateEffectiveQMakeCall();
@@ -460,7 +447,7 @@ QWidget *QMakeStep::createConfigWidget()
qmakeBuildSystem()->scheduleUpdateAllNowOrLater();
});
connect(m_buildType, &BaseAspect::changed,
connect(&buildType, &BaseAspect::changed,
widget, [this] { buildConfigurationSelected(); });
connect(qmakeBuildConfiguration(), &QmakeBuildConfiguration::qmlDebuggingChanged,
@@ -510,7 +497,7 @@ void QMakeStep::qmakeBuildConfigChanged()
const bool debug = bc->qmakeBuildConfiguration() & QtVersion::DebugBuild;
{
const GuardLocker locker(m_ignoreChanges);
m_buildType->setValue(debug ? 0 : 1);
buildType.setValue(debug ? 0 : 1);
}
updateAbiWidgets();
updateEffectiveQMakeCall();
@@ -599,7 +586,7 @@ void QMakeStep::buildConfigurationSelected()
return;
QmakeBuildConfiguration *bc = qmakeBuildConfiguration();
QtVersion::QmakeBuildConfigs buildConfiguration = bc->qmakeBuildConfiguration();
if (m_buildType->value() == 0) { // debug
if (buildType() == 0) { // debug
buildConfiguration = buildConfiguration | QtVersion::DebugBuild;
} else {
buildConfiguration = buildConfiguration & ~QtVersion::DebugBuild;
@@ -683,7 +670,7 @@ void QMakeStep::updateAbiWidgets()
void QMakeStep::updateEffectiveQMakeCall()
{
m_effectiveCall->setValue(effectiveQMakeCall());
effectiveCall.setValue(effectiveQMakeCall());
}
void QMakeStep::handleAbiWidgetChange()

View File

@@ -6,6 +6,7 @@
#include "qmakeprojectmanager_global.h"
#include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/runconfigurationaspects.h>
#include <utils/aspects.h>
#include <utils/commandline.h>
@@ -16,17 +17,11 @@
#include <QDebug>
QT_BEGIN_NAMESPACE
class QComboBox;
class QLabel;
class QLineEdit;
class QPlainTextEdit;
class QListWidget;
QT_END_NAMESPACE
namespace ProjectExplorer {
class Abi;
class ArgumentsAspect;
} // namespace ProjectExplorer
namespace ProjectExplorer { class Abi; }
namespace QtSupport { class QtVersion; }
@@ -115,9 +110,7 @@ public:
QMakeStepConfig deducedArguments() const;
// arguments passed to the pro file parser
QStringList parserArguments();
// arguments set by the user
QString userArguments() const;
void setUserArguments(const QString &arguments);
// Extra arguments for qmake and pro file parser. Not user editable via UI.
QStringList extraArguments() const;
void setExtraArguments(const QStringList &args);
@@ -133,6 +126,10 @@ public:
QVariantMap toMap() const override;
Utils::SelectionAspect buildType{this};
ProjectExplorer::ArgumentsAspect userArguments{this};
Utils::StringAspect effectiveCall{this};
protected:
bool fromMap(const QVariantMap &map) override;
@@ -159,7 +156,7 @@ private:
Utils::CommandLine m_qmakeCommand;
Utils::CommandLine m_makeCommand;
ProjectExplorer::ArgumentsAspect *m_userArgs = nullptr;
// Extra arguments for qmake and pro file parser
QStringList m_extraArgs;
// Extra arguments for pro file parser only
@@ -177,8 +174,6 @@ private:
Utils::Guard m_ignoreChanges;
QLabel *abisLabel = nullptr;
Utils::SelectionAspect *m_buildType = nullptr;
Utils::StringAspect *m_effectiveCall = nullptr;
QListWidget *abisListWidget = nullptr;
};