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 {
|
namespace BuildConfiguration {
|
||||||
const char BUILD_TYPE_KEY[] = "MesonProjectManager.BuildConfig.Type";
|
const char BUILD_TYPE_KEY[] = "MesonProjectManager.BuildConfig.Type";
|
||||||
|
const char PARAMETERS_KEY[] = "MesonProjectManager.BuildConfig.Parameters";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings page
|
// Settings page
|
||||||
|
@@ -55,6 +55,7 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
|
|||||||
auto buildDirAspect = buildCfg->buildDirectoryAspect();
|
auto buildDirAspect = buildCfg->buildDirectoryAspect();
|
||||||
buildDirAspect->addToLayout(buildDirWBuilder);
|
buildDirAspect->addToLayout(buildDirWBuilder);
|
||||||
|
|
||||||
|
ui->parametersLineEdit->setText(buildCfg->parameters());
|
||||||
ui->optionsFilterLineEdit->setFiltering(true);
|
ui->optionsFilterLineEdit->setFiltering(true);
|
||||||
|
|
||||||
ui->optionsTreeView->sortByColumn(0, Qt::AscendingOrder);
|
ui->optionsTreeView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
@@ -137,6 +138,9 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
|
|||||||
m_showProgressTimer.start();
|
m_showProgressTimer.start();
|
||||||
bs->wipe();
|
bs->wipe();
|
||||||
});
|
});
|
||||||
|
connect(ui->parametersLineEdit, &QLineEdit::editingFinished, this, [this, buildCfg] {
|
||||||
|
buildCfg->setParameters(ui->parametersLineEdit->text());
|
||||||
|
});
|
||||||
bs->triggerParsing();
|
bs->triggerParsing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -83,6 +83,20 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</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>
|
<item>
|
||||||
<widget class="QWidget" name="buildDirWidget" native="true"/>
|
<widget class="QWidget" name="buildDirWidget" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
|
@@ -42,6 +42,7 @@
|
|||||||
#include <projectexplorer/projectmacroexpander.h>
|
#include <projectexplorer/projectmacroexpander.h>
|
||||||
|
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
#include <utils/qtcprocess.h>
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
@@ -117,10 +118,27 @@ void MesonBuildConfiguration::build(const QString &target)
|
|||||||
mesonBuildStep->setBuildTarget(originalBuildTarget);
|
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
|
QVariantMap MesonBuildConfiguration::toMap() const
|
||||||
{
|
{
|
||||||
auto data = ProjectExplorer::BuildConfiguration::toMap();
|
auto data = ProjectExplorer::BuildConfiguration::toMap();
|
||||||
data[Constants::BuildConfiguration::BUILD_TYPE_KEY] = mesonBuildTypeName(m_buildType);
|
data[Constants::BuildConfiguration::BUILD_TYPE_KEY] = mesonBuildTypeName(m_buildType);
|
||||||
|
data[Constants::BuildConfiguration::PARAMETERS_KEY] = m_parameters;
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,6 +148,7 @@ bool MesonBuildConfiguration::fromMap(const QVariantMap &map)
|
|||||||
m_buildSystem = new MesonBuildSystem{this};
|
m_buildSystem = new MesonBuildSystem{this};
|
||||||
m_buildType = mesonBuildType(
|
m_buildType = mesonBuildType(
|
||||||
map.value(Constants::BuildConfiguration::BUILD_TYPE_KEY).toString());
|
map.value(Constants::BuildConfiguration::BUILD_TYPE_KEY).toString());
|
||||||
|
m_parameters = map.value(Constants::BuildConfiguration::PARAMETERS_KEY).toString();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -107,10 +107,13 @@ public:
|
|||||||
ProjectExplorer::BuildSystem *buildSystem() const final;
|
ProjectExplorer::BuildSystem *buildSystem() const final;
|
||||||
void build(const QString &target);
|
void build(const QString &target);
|
||||||
|
|
||||||
QStringList mesonConfigArgs()
|
QStringList mesonConfigArgs();
|
||||||
{
|
|
||||||
return {QString("-Dbuildtype=%1").arg(mesonBuildTypeName(m_buildType))};
|
const QString ¶meters() const;
|
||||||
}
|
void setParameters(const QString ¶ms);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void parametersChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVariantMap toMap() const override;
|
QVariantMap toMap() const override;
|
||||||
@@ -118,6 +121,7 @@ private:
|
|||||||
MesonBuildType m_buildType;
|
MesonBuildType m_buildType;
|
||||||
ProjectExplorer::NamedWidget *createConfigWidget() final;
|
ProjectExplorer::NamedWidget *createConfigWidget() final;
|
||||||
MesonBuildSystem *m_buildSystem = nullptr;
|
MesonBuildSystem *m_buildSystem = nullptr;
|
||||||
|
QString m_parameters;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MesonBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
class MesonBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||||
|
@@ -117,7 +117,8 @@ ProjectExplorer::Kit *MesonBuildSystem::MesonBuildSystem::kit()
|
|||||||
|
|
||||||
QStringList MesonBuildSystem::configArgs(bool isSetup)
|
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();
|
return m_pendingConfigArgs + mesonBuildConfiguration()->mesonConfigArgs();
|
||||||
else {
|
else {
|
||||||
return QStringList{
|
return QStringList{
|
||||||
@@ -179,6 +180,10 @@ void MesonBuildSystem::init()
|
|||||||
updateKit(kit());
|
updateKit(kit());
|
||||||
this->triggerParsing();
|
this->triggerParsing();
|
||||||
});
|
});
|
||||||
|
connect(mesonBuildConfiguration(), &MesonBuildConfiguration::parametersChanged, this, [this]() {
|
||||||
|
updateKit(kit());
|
||||||
|
wipe();
|
||||||
|
});
|
||||||
connect(mesonBuildConfiguration(), &MesonBuildConfiguration::environmentChanged, this, [this]() {
|
connect(mesonBuildConfiguration(), &MesonBuildConfiguration::environmentChanged, this, [this]() {
|
||||||
m_parser.setEnvironment(buildConfiguration()->environment());
|
m_parser.setEnvironment(buildConfiguration()->environment());
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user