From 772c838aa339cc1192fd76463f68861613cd8e9c Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Mon, 12 Apr 2010 19:16:49 +0200 Subject: [PATCH] Add a method to find pro-files used to create a Makefile Reviewed-by: dt --- .../qt4projectmanager/qtversionmanager.cpp | 24 ++++++++++++++++--- .../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 ddf32911888..b91966a0466 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -778,6 +778,24 @@ void dumpQMakeAssignments(const QList<QMakeAssignment> &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<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig) { if (debug) @@ -785,7 +803,7 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> 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"<<line; @@ -835,14 +853,14 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> 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 02d2d5bcea5..cc01d063356 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -225,6 +225,7 @@ public: QSet<QString> supportedTargetIds() const; // Static Methods + static bool makefileIsFor(const QString &directory, const QString &proFile); static QPair<QtVersion::QmakeBuildConfigs, QStringList> 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, -- GitLab