aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager
diff options
context:
space:
mode:
authordt <[email protected]>2009-01-21 17:21:59 +0100
committerdt <[email protected]>2009-01-21 17:21:59 +0100
commit38471eebfe0239c8d83f2b8c87dac639185c7e04 (patch)
tree4063478aeb5e0d1242ca027e048f0a8cab44110f /src/plugins/cmakeprojectmanager
parentdb20c44d4099ebafb053455634befec7df083099 (diff)
Fixes: Run cmake to get the version and check for the QtCreator generator
Details: We don't act on that information yet.
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp26
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.h3
2 files changed, 29 insertions, 0 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index fb19dbdbf9b..96170439d4e 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -98,6 +98,30 @@ CMakeSettingsPage::CMakeSettingsPage()
settings->beginGroup("CMakeSettings");
m_cmakeExecutable = settings->value("cmakeExecutable").toString();
settings->endGroup();
+ updateCachedInformation();
+}
+
+void CMakeSettingsPage::updateCachedInformation() const
+{
+ // We find out two things:
+ // Does this cmake version support a QtCreator generator
+ // and the version
+ QFileInfo fi(m_cmakeExecutable);
+ if (!fi.exists()) {
+ m_version.clear();
+ m_supportsQtCreator = false;
+ }
+ QProcess cmake;
+ cmake.start(m_cmakeExecutable, QStringList()<<"--help");
+ cmake.waitForFinished();
+ QString response = cmake.readAll();
+ QRegExp versionRegexp("^cmake version ([*\\d\\.]*)-(|patch (\\d*))(|\\r)\\n");
+ versionRegexp.indexIn(response);
+
+ m_supportsQtCreator = response.contains("QtCreator");
+ m_version = versionRegexp.cap(1);
+ if (!versionRegexp.capturedTexts().size()>3)
+ m_version += "." + versionRegexp.cap(3);
}
QString CMakeSettingsPage::findCmakeExecutable() const
@@ -144,6 +168,7 @@ void CMakeSettingsPage::saveSettings() const
void CMakeSettingsPage::apply()
{
m_cmakeExecutable = m_pathchooser->path();
+ updateCachedInformation();
saveSettings();
}
@@ -157,6 +182,7 @@ QString CMakeSettingsPage::cmakeExecutable() const
if (m_cmakeExecutable.isEmpty()) {
m_cmakeExecutable = findCmakeExecutable();
if (!m_cmakeExecutable.isEmpty()) {
+ updateCachedInformation();
saveSettings();
}
}
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index f0481c51498..49e6ac8846e 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -79,9 +79,12 @@ public:
QString cmakeExecutable() const;
void askUserForCMakeExecutable();
private:
+ void updateCachedInformation() const;
void saveSettings() const;
QString findCmakeExecutable() const;
mutable QString m_cmakeExecutable;
+ mutable QString m_version;
+ mutable bool m_supportsQtCreator;
Core::Utils::PathChooser *m_pathchooser;
};