mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-21 05:38:24 -05:00
@@ -0,0 +1,8 @@
|
|||||||
|
cmake-gui-env-platform-defaults
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
* :manual:`cmake-gui(1)` now populates its generator selection
|
||||||
|
widget default value from the :envvar:`CMAKE_GENERATOR` environment
|
||||||
|
variable. Additionally, environment variables
|
||||||
|
:envvar:`CMAKE_GENERATOR_PLATFORM` and :envvar:`CMAKE_GENERATOR_TOOLSET`
|
||||||
|
are used to populate their respective widget defaults.
|
||||||
@@ -10,8 +10,12 @@
|
|||||||
|
|
||||||
#include "Compilers.h"
|
#include "Compilers.h"
|
||||||
|
|
||||||
StartCompilerSetup::StartCompilerSetup(QWidget* p)
|
StartCompilerSetup::StartCompilerSetup(QString defaultGeneratorPlatform,
|
||||||
|
QString defaultGeneratorToolset,
|
||||||
|
QWidget* p)
|
||||||
: QWizardPage(p)
|
: QWizardPage(p)
|
||||||
|
, DefaultGeneratorPlatform(std::move(defaultGeneratorPlatform))
|
||||||
|
, DefaultGeneratorToolset(std::move(defaultGeneratorToolset))
|
||||||
{
|
{
|
||||||
QVBoxLayout* l = new QVBoxLayout(this);
|
QVBoxLayout* l = new QVBoxLayout(this);
|
||||||
l->addWidget(new QLabel(tr("Specify the generator for this project")));
|
l->addWidget(new QLabel(tr("Specify the generator for this project")));
|
||||||
@@ -68,6 +72,10 @@ QFrame* StartCompilerSetup::CreateToolsetWidgets()
|
|||||||
Toolset = new QLineEdit(frame);
|
Toolset = new QLineEdit(frame);
|
||||||
l->addWidget(Toolset);
|
l->addWidget(Toolset);
|
||||||
|
|
||||||
|
// Default to CMAKE_GENERATOR_TOOLSET env var if set
|
||||||
|
if (!DefaultGeneratorToolset.isEmpty()) {
|
||||||
|
this->Toolset->setText(DefaultGeneratorToolset);
|
||||||
|
}
|
||||||
return frame;
|
return frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,6 +207,14 @@ void StartCompilerSetup::onGeneratorChanged(QString const& name)
|
|||||||
|
|
||||||
this->PlatformOptions->addItems(platform_list);
|
this->PlatformOptions->addItems(platform_list);
|
||||||
PlatformFrame->show();
|
PlatformFrame->show();
|
||||||
|
|
||||||
|
// Default to generator platform from environment
|
||||||
|
if (!DefaultGeneratorPlatform.isEmpty()) {
|
||||||
|
int platform_index = platforms.indexOf(DefaultGeneratorPlatform);
|
||||||
|
if (platform_index != -1) {
|
||||||
|
this->PlatformOptions->setCurrentIndex(platform_index);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
PlatformFrame->hide();
|
PlatformFrame->hide();
|
||||||
}
|
}
|
||||||
@@ -421,8 +437,26 @@ void ToolchainCompilerSetup::setToolchainFile(const QString& t)
|
|||||||
|
|
||||||
FirstConfigure::FirstConfigure()
|
FirstConfigure::FirstConfigure()
|
||||||
{
|
{
|
||||||
|
const char* env_generator = std::getenv("CMAKE_GENERATOR");
|
||||||
|
const char* env_generator_platform = nullptr;
|
||||||
|
const char* env_generator_toolset = nullptr;
|
||||||
|
if (env_generator && std::strlen(env_generator)) {
|
||||||
|
mDefaultGenerator = env_generator;
|
||||||
|
env_generator_platform = std::getenv("CMAKE_GENERATOR_PLATFORM");
|
||||||
|
env_generator_toolset = std::getenv("CMAKE_GENERATOR_TOOLSET");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!env_generator_platform) {
|
||||||
|
env_generator_platform = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!env_generator_toolset) {
|
||||||
|
env_generator_toolset = "";
|
||||||
|
}
|
||||||
|
|
||||||
// this->setOption(QWizard::HaveFinishButtonOnEarlyPages, true);
|
// this->setOption(QWizard::HaveFinishButtonOnEarlyPages, true);
|
||||||
this->mStartCompilerSetupPage = new StartCompilerSetup(this);
|
this->mStartCompilerSetupPage = new StartCompilerSetup(
|
||||||
|
env_generator_platform, env_generator_toolset, this);
|
||||||
this->setPage(Start, this->mStartCompilerSetupPage);
|
this->setPage(Start, this->mStartCompilerSetupPage);
|
||||||
QObject::connect(this->mStartCompilerSetupPage, SIGNAL(selectionChanged()),
|
QObject::connect(this->mStartCompilerSetupPage, SIGNAL(selectionChanged()),
|
||||||
this, SLOT(restart()));
|
this, SLOT(restart()));
|
||||||
@@ -504,6 +538,17 @@ void FirstConfigure::loadFromSettings()
|
|||||||
this->mCrossCompilerSetupPage->setIncludeMode(
|
this->mCrossCompilerSetupPage->setIncludeMode(
|
||||||
settings.value("IncludeMode", 0).toInt());
|
settings.value("IncludeMode", 0).toInt());
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
|
// environment variables take precedence over application settings because...
|
||||||
|
// - they're harder to set
|
||||||
|
// - settings always exist after the program is run once, so the environment
|
||||||
|
// variables would never be used otherwise
|
||||||
|
// - platform and toolset are populated only from environment variables, so
|
||||||
|
// this prevents them from being taken from environment, while the
|
||||||
|
// generator is taken from application settings
|
||||||
|
if (!mDefaultGenerator.isEmpty()) {
|
||||||
|
this->mStartCompilerSetupPage->setCurrentGenerator(mDefaultGenerator);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FirstConfigure::saveToSettings()
|
void FirstConfigure::saveToSettings()
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ class StartCompilerSetup : public QWizardPage
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
StartCompilerSetup(QWidget* p);
|
StartCompilerSetup(QString defaultGeneratorPlatform,
|
||||||
|
QString defaultGeneratorToolset, QWidget* p);
|
||||||
~StartCompilerSetup();
|
~StartCompilerSetup();
|
||||||
void setGenerators(std::vector<cmake::GeneratorInfo> const& gens);
|
void setGenerators(std::vector<cmake::GeneratorInfo> const& gens);
|
||||||
void setCurrentGenerator(const QString& gen);
|
void setCurrentGenerator(const QString& gen);
|
||||||
@@ -64,6 +65,7 @@ protected:
|
|||||||
QStringList GeneratorsSupportingPlatform;
|
QStringList GeneratorsSupportingPlatform;
|
||||||
QMultiMap<QString, QString> GeneratorSupportedPlatforms;
|
QMultiMap<QString, QString> GeneratorSupportedPlatforms;
|
||||||
QMap<QString, QString> GeneratorDefaultPlatform;
|
QMap<QString, QString> GeneratorDefaultPlatform;
|
||||||
|
QString DefaultGeneratorPlatform, DefaultGeneratorToolset;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QFrame* CreateToolsetWidgets();
|
QFrame* CreateToolsetWidgets();
|
||||||
@@ -197,6 +199,7 @@ protected:
|
|||||||
NativeCompilerSetup* mNativeCompilerSetupPage;
|
NativeCompilerSetup* mNativeCompilerSetupPage;
|
||||||
CrossCompilerSetup* mCrossCompilerSetupPage;
|
CrossCompilerSetup* mCrossCompilerSetupPage;
|
||||||
ToolchainCompilerSetup* mToolchainCompilerSetupPage;
|
ToolchainCompilerSetup* mToolchainCompilerSetupPage;
|
||||||
|
QString mDefaultGenerator;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FirstConfigure_h
|
#endif // FirstConfigure_h
|
||||||
|
|||||||
Reference in New Issue
Block a user