forked from qt-creator/qt-creator
CMake: Use aspects more directly in CMakeBuildStep
Change-Id: Id12381556439ef6b3e56307a169830bb18da9003 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -208,37 +208,34 @@ static bool supportsStageForInstallation(const Kit *kit)
|
||||
CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
|
||||
CMakeAbstractProcessStep(bsl, id)
|
||||
{
|
||||
m_cmakeArguments = addAspect<StringAspect>();
|
||||
m_cmakeArguments->setSettingsKey(CMAKE_ARGUMENTS_KEY);
|
||||
m_cmakeArguments->setLabelText(Tr::tr("CMake arguments:"));
|
||||
m_cmakeArguments->setDisplayStyle(StringAspect::LineEditDisplay);
|
||||
cmakeArguments.setSettingsKey(CMAKE_ARGUMENTS_KEY);
|
||||
cmakeArguments.setLabelText(Tr::tr("CMake arguments:"));
|
||||
cmakeArguments.setDisplayStyle(StringAspect::LineEditDisplay);
|
||||
|
||||
m_toolArguments = addAspect<StringAspect>();
|
||||
m_toolArguments->setSettingsKey(TOOL_ARGUMENTS_KEY);
|
||||
m_toolArguments->setLabelText(Tr::tr("Tool arguments:"));
|
||||
m_toolArguments->setDisplayStyle(StringAspect::LineEditDisplay);
|
||||
toolArguments.setSettingsKey(TOOL_ARGUMENTS_KEY);
|
||||
toolArguments.setLabelText(Tr::tr("Tool arguments:"));
|
||||
toolArguments.setDisplayStyle(StringAspect::LineEditDisplay);
|
||||
|
||||
m_useStaging = addAspect<BoolAspect>();
|
||||
m_useStaging->setSettingsKey(USE_STAGING_KEY);
|
||||
m_useStaging->setLabel(Tr::tr("Stage for installation"), BoolAspect::LabelPlacement::AtCheckBox);
|
||||
m_useStaging->setDefaultValue(supportsStageForInstallation(kit()));
|
||||
useStaging.setSettingsKey(USE_STAGING_KEY);
|
||||
useStaging.setLabel(Tr::tr("Stage for installation"), BoolAspect::LabelPlacement::AtCheckBox);
|
||||
useStaging.setDefaultValue(supportsStageForInstallation(kit()));
|
||||
|
||||
m_stagingDir = addAspect<FilePathAspect>();
|
||||
m_stagingDir->setSettingsKey(STAGING_DIR_KEY);
|
||||
m_stagingDir->setLabelText(Tr::tr("Staging directory:"));
|
||||
m_stagingDir->setDefaultValue(FilePath::fromUserInput(initialStagingDir(kit())));
|
||||
stagingDir.setSettingsKey(STAGING_DIR_KEY);
|
||||
stagingDir.setLabelText(Tr::tr("Staging directory:"));
|
||||
stagingDir.setDefaultValue(FilePath::fromUserInput(initialStagingDir(kit())));
|
||||
|
||||
Kit *kit = buildConfiguration()->kit();
|
||||
if (CMakeBuildConfiguration::isIos(kit)) {
|
||||
m_useiOSAutomaticProvisioningUpdates = addAspect<BoolAspect>();
|
||||
m_useiOSAutomaticProvisioningUpdates->setDefaultValue(true);
|
||||
m_useiOSAutomaticProvisioningUpdates->setSettingsKey(
|
||||
useiOSAutomaticProvisioningUpdates.setDefaultValue(true);
|
||||
useiOSAutomaticProvisioningUpdates.setSettingsKey(
|
||||
IOS_AUTOMATIC_PROVISIONG_UPDATES_ARGUMENTS_KEY);
|
||||
m_useiOSAutomaticProvisioningUpdates->setLabel(
|
||||
useiOSAutomaticProvisioningUpdates.setLabel(
|
||||
Tr::tr("Enable automatic provisioning updates:"));
|
||||
m_useiOSAutomaticProvisioningUpdates->setToolTip(
|
||||
useiOSAutomaticProvisioningUpdates.setToolTip(
|
||||
Tr::tr("Tells xcodebuild to create and download a provisioning profile "
|
||||
"if a valid one does not exist."));
|
||||
} else {
|
||||
useiOSAutomaticProvisioningUpdates.setVisible(false);
|
||||
}
|
||||
|
||||
m_buildTargetModel.setHeader({Tr::tr("Target")});
|
||||
@@ -259,8 +256,8 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
|
||||
env.set("NINJA_STATUS", ninjaProgressString + "%o/sec] ");
|
||||
env.modify(m_userEnvironmentChanges);
|
||||
|
||||
if (m_useStaging)
|
||||
env.set("DESTDIR", currentStagingDir());
|
||||
if (useStaging())
|
||||
env.set("DESTDIR", stagingDir().path());
|
||||
});
|
||||
|
||||
connect(target(), &Target::parsingFinished, this, [this](bool success) {
|
||||
@@ -450,7 +447,7 @@ CommandLine CMakeBuildStep::cmakeCommand() const
|
||||
}
|
||||
return s;
|
||||
}));
|
||||
if (m_useStaging->value())
|
||||
if (useStaging())
|
||||
cmd.addArg("install");
|
||||
|
||||
auto bs = qobject_cast<CMakeBuildSystem *>(buildSystem());
|
||||
@@ -462,17 +459,16 @@ CommandLine CMakeBuildStep::cmakeCommand() const
|
||||
cmd.addArg(bs->cmakeBuildType());
|
||||
}
|
||||
|
||||
if (!m_cmakeArguments->value().isEmpty())
|
||||
cmd.addArgs(m_cmakeArguments->value(), CommandLine::Raw);
|
||||
cmd.addArgs(cmakeArguments(), CommandLine::Raw);
|
||||
|
||||
bool toolArgumentsSpecified = false;
|
||||
if (!m_toolArguments->value().isEmpty()) {
|
||||
if (!toolArguments().isEmpty()) {
|
||||
cmd.addArg("--");
|
||||
cmd.addArgs(m_toolArguments->value(), CommandLine::Raw);
|
||||
cmd.addArgs(toolArguments(), CommandLine::Raw);
|
||||
toolArgumentsSpecified = true;
|
||||
}
|
||||
|
||||
if (m_useiOSAutomaticProvisioningUpdates && m_useiOSAutomaticProvisioningUpdates->value()) {
|
||||
if (useiOSAutomaticProvisioningUpdates()) {
|
||||
// Only add the double dash if it wasn't added before.
|
||||
if (!toolArgumentsSpecified)
|
||||
cmd.addArg("--");
|
||||
@@ -525,12 +521,12 @@ QWidget *CMakeBuildStep::createConfigWidget()
|
||||
|
||||
QString summaryText = param.summary(displayName());
|
||||
|
||||
m_stagingDir->setEnabled(m_useStaging->value());
|
||||
if (m_useStaging->value()) {
|
||||
stagingDir.setEnabled(useStaging());
|
||||
if (useStaging()) {
|
||||
//: Stage (for installation) at <staging_dir> for <installation_dir>
|
||||
summaryText.append(
|
||||
"; "
|
||||
+ Tr::tr("Stage at %2 for %3").arg(currentStagingDir(), currentInstallPrefix()));
|
||||
+ Tr::tr("Stage at %2 for %3").arg(stagingDir().path(), currentInstallPrefix()));
|
||||
}
|
||||
|
||||
if (!m_buildPreset.isEmpty()) {
|
||||
@@ -591,13 +587,11 @@ QWidget *CMakeBuildStep::createConfigWidget()
|
||||
};
|
||||
|
||||
Layouting::Form builder;
|
||||
builder.addRow({m_cmakeArguments});
|
||||
builder.addRow({m_toolArguments});
|
||||
builder.addRow({m_useStaging});
|
||||
builder.addRow({m_stagingDir});
|
||||
|
||||
if (m_useiOSAutomaticProvisioningUpdates)
|
||||
builder.addRow({m_useiOSAutomaticProvisioningUpdates});
|
||||
builder.addRow({cmakeArguments});
|
||||
builder.addRow({toolArguments});
|
||||
builder.addRow({useStaging});
|
||||
builder.addRow({stagingDir});
|
||||
builder.addRow({useiOSAutomaticProvisioningUpdates});
|
||||
|
||||
builder.addRow({new QLabel(Tr::tr("Targets:")), frame});
|
||||
|
||||
@@ -609,13 +603,11 @@ QWidget *CMakeBuildStep::createConfigWidget()
|
||||
|
||||
updateDetails();
|
||||
|
||||
connect(m_cmakeArguments, &StringAspect::changed, this, updateDetails);
|
||||
connect(m_toolArguments, &StringAspect::changed, this, updateDetails);
|
||||
connect(m_useStaging, &BoolAspect::changed, this, updateDetails);
|
||||
connect(m_stagingDir, &StringAspect::changed, this, updateDetails);
|
||||
|
||||
if (m_useiOSAutomaticProvisioningUpdates)
|
||||
connect(m_useiOSAutomaticProvisioningUpdates, &BoolAspect::changed, this, updateDetails);
|
||||
connect(&cmakeArguments, &BaseAspect::changed, this, updateDetails);
|
||||
connect(&toolArguments, &BaseAspect::changed, this, updateDetails);
|
||||
connect(&useStaging, &BaseAspect::changed, this, updateDetails);
|
||||
connect(&stagingDir, &BaseAspect::changed, this, updateDetails);
|
||||
connect(&useiOSAutomaticProvisioningUpdates, &BaseAspect::changed, this, updateDetails);
|
||||
|
||||
connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged,
|
||||
this, updateDetails);
|
||||
@@ -685,12 +677,12 @@ void CMakeBuildStep::setConfiguration(const QString &configuration)
|
||||
|
||||
void CMakeBuildStep::setToolArguments(const QStringList &nativeToolArguments)
|
||||
{
|
||||
m_toolArguments->setValue(nativeToolArguments.join(" "));
|
||||
toolArguments.setValue(nativeToolArguments.join(" "));
|
||||
}
|
||||
|
||||
void CMakeBuildStep::setCMakeArguments(const QStringList &cmakeArguments)
|
||||
void CMakeBuildStep::setCMakeArguments(const QStringList &cmakeArgs)
|
||||
{
|
||||
m_cmakeArguments->setValue(cmakeArguments.join(" "));
|
||||
cmakeArguments.setValue(cmakeArgs.join(" "));
|
||||
}
|
||||
|
||||
Environment CMakeBuildStep::environment() const
|
||||
@@ -763,11 +755,6 @@ QString CMakeBuildStep::currentInstallPrefix() const
|
||||
return QString::fromUtf8(config.valueOf("CMAKE_INSTALL_PREFIX"));
|
||||
}
|
||||
|
||||
QString CMakeBuildStep::currentStagingDir() const
|
||||
{
|
||||
return m_stagingDir->filePath().path();
|
||||
}
|
||||
|
||||
FilePath CMakeBuildStep::cmakeExecutable() const
|
||||
{
|
||||
CMakeTool *tool = CMakeKitAspect::cmakeTool(kit());
|
||||
@@ -776,12 +763,11 @@ FilePath CMakeBuildStep::cmakeExecutable() const
|
||||
|
||||
void CMakeBuildStep::updateDeploymentData()
|
||||
{
|
||||
if (!m_useStaging->value())
|
||||
if (!useStaging())
|
||||
return;
|
||||
|
||||
QString install = currentInstallPrefix();
|
||||
QString stagingDir = currentStagingDir();
|
||||
FilePath rootDir = cmakeExecutable().withNewPath(stagingDir);
|
||||
FilePath rootDir = cmakeExecutable().withNewPath(stagingDir().path());
|
||||
Q_UNUSED(install);
|
||||
|
||||
DeploymentData deploymentData;
|
||||
|
@@ -70,6 +70,12 @@ public:
|
||||
|
||||
void setConfiguration(const QString &configuration);
|
||||
|
||||
Utils::StringAspect cmakeArguments{this};
|
||||
Utils::StringAspect toolArguments{this};
|
||||
Utils::BoolAspect useiOSAutomaticProvisioningUpdates{this};
|
||||
Utils::BoolAspect useStaging{this};
|
||||
Utils::FilePathAspect stagingDir{this};
|
||||
|
||||
signals:
|
||||
void buildTargetsChanged();
|
||||
void environmentChanged();
|
||||
@@ -86,7 +92,6 @@ private:
|
||||
|
||||
Utils::FilePath cmakeExecutable() const;
|
||||
QString currentInstallPrefix() const;
|
||||
QString currentStagingDir() const;
|
||||
|
||||
QString defaultBuildTarget() const;
|
||||
bool isCleanStep() const;
|
||||
@@ -98,11 +103,6 @@ private:
|
||||
|
||||
friend class CMakeBuildStepConfigWidget;
|
||||
QStringList m_buildTargets; // Convention: Empty string member signifies "Current executable"
|
||||
Utils::StringAspect *m_cmakeArguments = nullptr;
|
||||
Utils::StringAspect *m_toolArguments = nullptr;
|
||||
Utils::BoolAspect *m_useiOSAutomaticProvisioningUpdates = nullptr;
|
||||
Utils::BoolAspect *m_useStaging = nullptr;
|
||||
Utils::FilePathAspect *m_stagingDir = nullptr;
|
||||
|
||||
QString m_allTarget = "all";
|
||||
QString m_installTarget = "install";
|
||||
|
Reference in New Issue
Block a user