forked from qt-creator/qt-creator
Allow the user to add custom parameters to meson
Don't use QtCreator's autogenerated native-file if the user passed a custom one or a cross-file. Change-Id: Ic1793df2578b6f5295cad88f0dc003666e5f16c1 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
committed by
BogDan Vatra
parent
efa0f74645
commit
7a6bfbcfbe
@@ -35,6 +35,7 @@ const char ID[] = "MesonProjectManager.MesonProject";
|
||||
|
||||
namespace BuildConfiguration {
|
||||
const char BUILD_TYPE_KEY[] = "MesonProjectManager.BuildConfig.Type";
|
||||
const char PARAMETERS_KEY[] = "MesonProjectManager.BuildConfig.Parameters";
|
||||
}
|
||||
|
||||
// Settings page
|
||||
|
@@ -55,6 +55,7 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
|
||||
auto buildDirAspect = buildCfg->buildDirectoryAspect();
|
||||
buildDirAspect->addToLayout(buildDirWBuilder);
|
||||
|
||||
ui->parametersLineEdit->setText(buildCfg->parameters());
|
||||
ui->optionsFilterLineEdit->setFiltering(true);
|
||||
|
||||
ui->optionsTreeView->sortByColumn(0, Qt::AscendingOrder);
|
||||
@@ -137,6 +138,9 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
|
||||
m_showProgressTimer.start();
|
||||
bs->wipe();
|
||||
});
|
||||
connect(ui->parametersLineEdit, &QLineEdit::editingFinished, this, [this, buildCfg] {
|
||||
buildCfg->setParameters(ui->parametersLineEdit->text());
|
||||
});
|
||||
bs->triggerParsing();
|
||||
}
|
||||
|
||||
|
@@ -83,6 +83,20 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Parameters</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="parametersLineEdit"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="buildDirWidget" native="true"/>
|
||||
</item>
|
||||
|
@@ -42,6 +42,7 @@
|
||||
#include <projectexplorer/projectmacroexpander.h>
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
|
||||
#include <QDir>
|
||||
|
||||
@@ -117,10 +118,27 @@ void MesonBuildConfiguration::build(const QString &target)
|
||||
mesonBuildStep->setBuildTarget(originalBuildTarget);
|
||||
}
|
||||
|
||||
QStringList MesonBuildConfiguration::mesonConfigArgs()
|
||||
{
|
||||
return Utils::QtcProcess::splitArgs(m_parameters) + QStringList{QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
||||
}
|
||||
|
||||
const QString &MesonBuildConfiguration::parameters() const
|
||||
{
|
||||
return m_parameters;
|
||||
}
|
||||
|
||||
void MesonBuildConfiguration::setParameters(const QString ¶ms)
|
||||
{
|
||||
m_parameters = params;
|
||||
emit parametersChanged();
|
||||
}
|
||||
|
||||
QVariantMap MesonBuildConfiguration::toMap() const
|
||||
{
|
||||
auto data = ProjectExplorer::BuildConfiguration::toMap();
|
||||
data[Constants::BuildConfiguration::BUILD_TYPE_KEY] = mesonBuildTypeName(m_buildType);
|
||||
data[Constants::BuildConfiguration::PARAMETERS_KEY] = m_parameters;
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -130,6 +148,7 @@ bool MesonBuildConfiguration::fromMap(const QVariantMap &map)
|
||||
m_buildSystem = new MesonBuildSystem{this};
|
||||
m_buildType = mesonBuildType(
|
||||
map.value(Constants::BuildConfiguration::BUILD_TYPE_KEY).toString());
|
||||
m_parameters = map.value(Constants::BuildConfiguration::PARAMETERS_KEY).toString();
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@@ -107,10 +107,13 @@ public:
|
||||
ProjectExplorer::BuildSystem *buildSystem() const final;
|
||||
void build(const QString &target);
|
||||
|
||||
QStringList mesonConfigArgs()
|
||||
{
|
||||
return {QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
||||
}
|
||||
QStringList mesonConfigArgs();
|
||||
|
||||
const QString ¶meters() const;
|
||||
void setParameters(const QString ¶ms);
|
||||
|
||||
signals:
|
||||
void parametersChanged();
|
||||
|
||||
private:
|
||||
QVariantMap toMap() const override;
|
||||
@@ -118,6 +121,7 @@ private:
|
||||
MesonBuildType m_buildType;
|
||||
ProjectExplorer::NamedWidget *createConfigWidget() final;
|
||||
MesonBuildSystem *m_buildSystem = nullptr;
|
||||
QString m_parameters;
|
||||
};
|
||||
|
||||
class MesonBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
|
@@ -117,7 +117,8 @@ ProjectExplorer::Kit *MesonBuildSystem::MesonBuildSystem::kit()
|
||||
|
||||
QStringList MesonBuildSystem::configArgs(bool isSetup)
|
||||
{
|
||||
if (!isSetup)
|
||||
const QString ¶ms = mesonBuildConfiguration()->parameters();
|
||||
if (!isSetup || params.contains("--cross-file") || params.contains("--native-file"))
|
||||
return m_pendingConfigArgs + mesonBuildConfiguration()->mesonConfigArgs();
|
||||
else {
|
||||
return QStringList{
|
||||
@@ -179,6 +180,10 @@ void MesonBuildSystem::init()
|
||||
updateKit(kit());
|
||||
this->triggerParsing();
|
||||
});
|
||||
connect(mesonBuildConfiguration(), &MesonBuildConfiguration::parametersChanged, this, [this]() {
|
||||
updateKit(kit());
|
||||
wipe();
|
||||
});
|
||||
connect(mesonBuildConfiguration(), &MesonBuildConfiguration::environmentChanged, this, [this]() {
|
||||
m_parser.setEnvironment(buildConfiguration()->environment());
|
||||
});
|
||||
|
Reference in New Issue
Block a user