diff options
author | dt <[email protected]> | 2009-01-21 17:21:59 +0100 |
---|---|---|
committer | dt <[email protected]> | 2009-01-21 17:21:59 +0100 |
commit | 38471eebfe0239c8d83f2b8c87dac639185c7e04 (patch) | |
tree | 4063478aeb5e0d1242ca027e048f0a8cab44110f /src/plugins/cmakeprojectmanager | |
parent | db20c44d4099ebafb053455634befec7df083099 (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.cpp | 26 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeprojectmanager.h | 3 |
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; }; |