mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 21:59:54 -06:00
8
Help/release/dev/cmake-gui-env-platform-defaults.rst
Normal file
8
Help/release/dev/cmake-gui-env-platform-defaults.rst
Normal file
@@ -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"
|
||||
|
||||
StartCompilerSetup::StartCompilerSetup(QWidget* p)
|
||||
StartCompilerSetup::StartCompilerSetup(QString defaultGeneratorPlatform,
|
||||
QString defaultGeneratorToolset,
|
||||
QWidget* p)
|
||||
: QWizardPage(p)
|
||||
, DefaultGeneratorPlatform(std::move(defaultGeneratorPlatform))
|
||||
, DefaultGeneratorToolset(std::move(defaultGeneratorToolset))
|
||||
{
|
||||
QVBoxLayout* l = new QVBoxLayout(this);
|
||||
l->addWidget(new QLabel(tr("Specify the generator for this project")));
|
||||
@@ -68,6 +72,10 @@ QFrame* StartCompilerSetup::CreateToolsetWidgets()
|
||||
Toolset = new QLineEdit(frame);
|
||||
l->addWidget(Toolset);
|
||||
|
||||
// Default to CMAKE_GENERATOR_TOOLSET env var if set
|
||||
if (!DefaultGeneratorToolset.isEmpty()) {
|
||||
this->Toolset->setText(DefaultGeneratorToolset);
|
||||
}
|
||||
return frame;
|
||||
}
|
||||
|
||||
@@ -199,6 +207,14 @@ void StartCompilerSetup::onGeneratorChanged(QString const& name)
|
||||
|
||||
this->PlatformOptions->addItems(platform_list);
|
||||
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 {
|
||||
PlatformFrame->hide();
|
||||
}
|
||||
@@ -421,8 +437,26 @@ void ToolchainCompilerSetup::setToolchainFile(const QString& t)
|
||||
|
||||
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->mStartCompilerSetupPage = new StartCompilerSetup(this);
|
||||
this->mStartCompilerSetupPage = new StartCompilerSetup(
|
||||
env_generator_platform, env_generator_toolset, this);
|
||||
this->setPage(Start, this->mStartCompilerSetupPage);
|
||||
QObject::connect(this->mStartCompilerSetupPage, SIGNAL(selectionChanged()),
|
||||
this, SLOT(restart()));
|
||||
@@ -504,6 +538,17 @@ void FirstConfigure::loadFromSettings()
|
||||
this->mCrossCompilerSetupPage->setIncludeMode(
|
||||
settings.value("IncludeMode", 0).toInt());
|
||||
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()
|
||||
|
||||
@@ -29,7 +29,8 @@ class StartCompilerSetup : public QWizardPage
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
StartCompilerSetup(QWidget* p);
|
||||
StartCompilerSetup(QString defaultGeneratorPlatform,
|
||||
QString defaultGeneratorToolset, QWidget* p);
|
||||
~StartCompilerSetup();
|
||||
void setGenerators(std::vector<cmake::GeneratorInfo> const& gens);
|
||||
void setCurrentGenerator(const QString& gen);
|
||||
@@ -64,6 +65,7 @@ protected:
|
||||
QStringList GeneratorsSupportingPlatform;
|
||||
QMultiMap<QString, QString> GeneratorSupportedPlatforms;
|
||||
QMap<QString, QString> GeneratorDefaultPlatform;
|
||||
QString DefaultGeneratorPlatform, DefaultGeneratorToolset;
|
||||
|
||||
private:
|
||||
QFrame* CreateToolsetWidgets();
|
||||
@@ -197,6 +199,7 @@ protected:
|
||||
NativeCompilerSetup* mNativeCompilerSetupPage;
|
||||
CrossCompilerSetup* mCrossCompilerSetupPage;
|
||||
ToolchainCompilerSetup* mToolchainCompilerSetupPage;
|
||||
QString mDefaultGenerator;
|
||||
};
|
||||
|
||||
#endif // FirstConfigure_h
|
||||
|
||||
Reference in New Issue
Block a user