Add a method to find pro-files used to create a Makefile

Reviewed-by: dt
This commit is contained in:
Tobias Hunger
2010-04-12 19:16:49 +02:00
parent 75da336d79
commit 772c838aa3
2 changed files with 23 additions and 4 deletions

View File

@@ -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) QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(const QString &directory, QtVersion::QmakeBuildConfigs defaultBuildConfig)
{ {
if (debug) if (debug)
@@ -785,7 +803,7 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(
QtVersion::QmakeBuildConfigs result = defaultBuildConfig; QtVersion::QmakeBuildConfigs result = defaultBuildConfig;
QStringList result2; QStringList result2;
QString line = findQMakeLine(directory); QString line = findQMakeLine(directory, QLatin1String("# Command:"));
if (!line.isEmpty()) { if (!line.isEmpty()) {
if (debug) if (debug)
qDebug()<<"Found line"<<line; qDebug()<<"Found line"<<line;
@@ -835,14 +853,14 @@ QPair<QtVersion::QmakeBuildConfigs, QStringList> QtVersionManager::scanMakeFile(
return qMakePair(result, result2); return qMakePair(result, result2);
} }
QString QtVersionManager::findQMakeLine(const QString &directory) QString QtVersionManager::findQMakeLine(const QString &directory, const QString &key)
{ {
QFile makefile(directory + QLatin1String("/Makefile" )); QFile makefile(directory + QLatin1String("/Makefile" ));
if (makefile.exists() && makefile.open(QFile::ReadOnly)) { if (makefile.exists() && makefile.open(QFile::ReadOnly)) {
QTextStream ts(&makefile); QTextStream ts(&makefile);
while (!ts.atEnd()) { while (!ts.atEnd()) {
const QString line = ts.readLine(); const QString line = ts.readLine();
if (line.startsWith(QLatin1String("# Command:"))) if (line.startsWith(key))
return line; return line;
} }
} }

View File

@@ -225,6 +225,7 @@ public:
QSet<QString> supportedTargetIds() const; QSet<QString> supportedTargetIds() const;
// Static Methods // Static Methods
static bool makefileIsFor(const QString &directory, const QString &proFile);
static QPair<QtVersion::QmakeBuildConfigs, QStringList> scanMakeFile(const QString &directory, static QPair<QtVersion::QmakeBuildConfigs, QStringList> scanMakeFile(const QString &directory,
QtVersion::QmakeBuildConfigs defaultBuildConfig); QtVersion::QmakeBuildConfigs defaultBuildConfig);
static QString findQMakeBinaryFromMakefile(const QString &directory); static QString findQMakeBinaryFromMakefile(const QString &directory);
@@ -239,7 +240,7 @@ private slots:
private: private:
// This function is really simplistic... // This function is really simplistic...
static bool equals(QtVersion *a, QtVersion *b); 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 QString trimLine(const QString line);
static QStringList splitLine(const QString &line); static QStringList splitLine(const QString &line);
static void parseParts(const QStringList &parts, static void parseParts(const QStringList &parts,