diff --git a/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg b/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg
--- a/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg
+++ b/projectbuilders/cmakebuilder/cmakebuilderconfig.kcfg
@@ -5,6 +5,9 @@
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
+
+
+
Unix Makefiles
diff --git a/projectbuilders/cmakebuilder/cmakebuilderpreferences.h b/projectbuilders/cmakebuilder/cmakebuilderpreferences.h
--- a/projectbuilders/cmakebuilder/cmakebuilderpreferences.h
+++ b/projectbuilders/cmakebuilder/cmakebuilderpreferences.h
@@ -45,6 +45,7 @@
virtual void defaults() override;
public slots:
+ void cmakeExeChanged(const QString& exe);
void generatorChanged(const QString& generator);
private:
diff --git a/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp b/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp
--- a/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp
+++ b/projectbuilders/cmakebuilder/cmakebuilderpreferences.cpp
@@ -27,6 +27,7 @@
#include "ui_cmakebuildersettings.h"
#include "cmakebuilderconfig.h"
+#include "cmakeutils.h"
CMakeBuilderPreferences::CMakeBuilderPreferences(KDevelop::IPlugin* plugin, QWidget* parent)
: KDevelop::ConfigPage(plugin, CMakeBuilderSettings::self(), parent)
@@ -40,6 +41,9 @@
// Visual Studio solution is the standard generator under windows, but we dont want to use
// the VS IDE, so we need nmake makefiles
m_prefsUi->generator->addItem("NMake Makefiles");
+ static_cast(CMakeBuilderSettings::self()->findItem("generator"))->setDefaultValue("NMake Makefiles");
+
+ m_prefsUi->cmakeExe->setFilter("*.exe");
#else
m_prefsUi->generator->addItem("Unix Makefiles");
#endif
@@ -47,6 +51,7 @@
if(hasNinja)
m_prefsUi->generator->addItem("Ninja");
+ connect(m_prefsUi->cmakeExe, &KUrlRequester::textChanged, this, &CMakeBuilderPreferences::cmakeExeChanged);
connect(m_prefsUi->generator, static_cast(&QComboBox::currentIndexChanged), this, &CMakeBuilderPreferences::generatorChanged);
}
@@ -57,12 +62,14 @@
void CMakeBuilderPreferences::defaults()
{
+ m_prefsUi->cmakeExe->setText(CMake::findExecutable());
m_prefsUi->generator->setCurrentIndex(0);
KDevelop::ConfigPage::defaults();
}
void CMakeBuilderPreferences::apply()
{
+ CMakeBuilderSettings::setCmakeExe(m_prefsUi->cmakeExe->text());
CMakeBuilderSettings::setGenerator(m_prefsUi->generator->currentText());
KDevelop::ConfigPage::apply();
CMakeBuilderSettings::self()->save();
@@ -70,11 +77,19 @@
void CMakeBuilderPreferences::reset()
{
+ m_prefsUi->cmakeExe->setText(CMakeBuilderSettings::self()->cmakeExe());
int idx = m_prefsUi->generator->findText(CMakeBuilderSettings::self()->generator());
m_prefsUi->generator->setCurrentIndex(idx);
KDevelop::ConfigPage::reset();
}
+void CMakeBuilderPreferences::cmakeExeChanged(const QString& exe)
+{
+ if (CMakeBuilderSettings::self()->cmakeExe() != exe) {
+ emit changed();
+ }
+}
+
void CMakeBuilderPreferences::generatorChanged(const QString& generator)
{
if (CMakeBuilderSettings::self()->generator() != generator) {
diff --git a/projectbuilders/cmakebuilder/cmakebuildersettings.ui b/projectbuilders/cmakebuilder/cmakebuildersettings.ui
--- a/projectbuilders/cmakebuilder/cmakebuildersettings.ui
+++ b/projectbuilders/cmakebuilder/cmakebuildersettings.ui
@@ -12,13 +12,30 @@
-
-
+
- Generator:
+ Default CMake executable:
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Generator:
+
+
+
+ -