diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 0e096280225c15d49ed2b4df468bfba335e48a84..053982c099cc2d930787ea4d0d32423ab2981ba3 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -631,6 +631,14 @@ QString QtVersion::mkspecPath() const QString QtVersion::qtVersionString() const { + if (m_qtVersionString.isNull()) { + QFileInfo qmake(m_qmakeCommand); + if (qmake.exists() && qmake.isExecutable()) { + m_qtVersionString = DebuggingHelperLibrary::qtVersionForQMake(qmake.absoluteFilePath()); + } else { + m_qtVersionString = QLatin1String(""); + } + } return m_qtVersionString; } @@ -657,14 +665,7 @@ void QtVersion::setQMakeCommand(const QString& qmakeCommand) m_toolChainUpToDate = false; // TODO do i need to optimize this? m_versionInfoUpToDate = false; - m_hasDebuggingHelper = !debuggingHelperLibrary().isEmpty(); - - QFileInfo qmake(qmakeCommand); - if (qmake.exists() && qmake.isExecutable()) { - m_qtVersionString = DebuggingHelperLibrary::qtVersionForQMake(qmake.absoluteFilePath()); - } else { - m_qtVersionString.clear(); - } + m_qtVersionString = QString(); updateSourcePath(); } @@ -985,8 +986,15 @@ void QtVersion::updateVersionInfo() const } } - if (m_versionInfo.contains("QT_INSTALL_DATA")) - m_versionInfo.insert("QMAKE_MKSPECS", QDir::cleanPath(m_versionInfo.value("QT_INSTALL_DATA")+"/mkspecs")); + if (m_versionInfo.contains("QT_INSTALL_DATA")) { + QString qtInstallData = m_versionInfo.value("QT_INSTALL_DATA"); + m_versionInfo.insert("QMAKE_MKSPECS", QDir::cleanPath(qtInstallData+"/mkspecs")); + + if (qtInstallData.isEmpty()) + m_hasDebuggingHelper = false; + else + m_hasDebuggingHelper = DebuggingHelperLibrary::debuggingHelperLibraryByInstallData(qtInstallData).isEmpty(); + } // Now check for a qt that is configured with a prefix but not installed if (m_versionInfo.contains("QT_INSTALL_BINS")) { @@ -1015,6 +1023,7 @@ void QtVersion::updateVersionInfo() const m_hasDemos = true; } } + m_versionInfoUpToDate = true; } @@ -1417,6 +1426,7 @@ QtVersion::QmakeBuildConfigs QtVersion::defaultBuildConfig() const bool QtVersion::hasDebuggingHelper() const { + updateVersionInfo(); return m_hasDebuggingHelper; } diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 69f8eb4df4d5c814505c91b6047b46a6ad6d9672..2317c099e17ea635558aa0344be6094b8526aea1 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -155,7 +155,7 @@ private: int m_id; bool m_isAutodetected; QString m_autodetectionSource; - bool m_hasDebuggingHelper; + mutable bool m_hasDebuggingHelper; // controlled by m_versionInfoUpToDate QString m_mwcDirectory; QString m_s60SDKDirectory;