From 61bbad28110729a7f9f84521402d227075e25677 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 12 Apr 2010 19:16:49 +0200 Subject: Add a method to find pro-files used to create a Makefile Reviewed-by: dt (cherry picked from commit 772c838aa339cc1192fd76463f68861613cd8e9c) --- src/plugins/qt4projectmanager/qtversionmanager.cpp | 24 +++++++++++++++++++--- src/plugins/qt4projectmanager/qtversionmanager.h | 3 ++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 1579022ab4..73620ffa16 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -779,6 +779,24 @@ void dumpQMakeAssignments(const QList &list) } } +bool QtVersionManager::makefileIsFor(const QString &directory, const QString &proFile) +{ + if (proFile.isEmpty()) + return true; + + QString line = findQMakeLine(directory, QLatin1String("# Project:")).trimmed(); + if (line.isEmpty()) + return false; + + + line = line.mid(line.indexOf(QChar(':')) + 1); + line = line.trimmed(); + + QFileInfo srcFileInfo(QDir(directory), line); + QFileInfo proFileInfo(proFile); + return srcFileInfo == proFileInfo; +} + QPair QtVersionManager::scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig) { if (debug) @@ -786,7 +804,7 @@ QPair QtVersionManager::scanMakeFile( QtVersion::QmakeBuildConfigs result = defaultBuildConfig; QStringList result2; - QString line = findQMakeLine(directory); + QString line = findQMakeLine(directory, QLatin1String("# Command:")); if (!line.isEmpty()) { if (debug) qDebug()<<"Found line"< QtVersionManager::scanMakeFile( return qMakePair(result, result2); } -QString QtVersionManager::findQMakeLine(const QString &directory) +QString QtVersionManager::findQMakeLine(const QString &directory, const QString &key) { QFile makefile(directory + QLatin1String("/Makefile" )); if (makefile.exists() && makefile.open(QFile::ReadOnly)) { QTextStream ts(&makefile); while (!ts.atEnd()) { const QString line = ts.readLine(); - if (line.startsWith(QLatin1String("# Command:"))) + if (line.startsWith(key)) return line; } } diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 02d2d5bcea..cc01d06335 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -225,6 +225,7 @@ public: QSet supportedTargetIds() const; // Static Methods + static bool makefileIsFor(const QString &directory, const QString &proFile); static QPair scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig); static QString findQMakeBinaryFromMakefile(const QString &directory); @@ -239,7 +240,7 @@ private slots: private: // This function is really simplistic... static bool equals(QtVersion *a, QtVersion *b); - static QString findQMakeLine(const QString &directory); + static QString findQMakeLine(const QString &directory, const QString &key); static QString trimLine(const QString line); static QStringList splitLine(const QString &line); static void parseParts(const QStringList &parts, -- cgit v1.2.3