QT_BEGIN_NAMESPACE static QStringList getSources(const char *var, const char *vvar, const QStringList &baseVPaths, const QString &projectDir, const ProFileEvaluator &visitor) { QStringList vPaths = visitor.absolutePathValues(QLatin1String(vvar), projectDir); vPaths += baseVPaths; vPaths.removeDuplicates(); return visitor.absoluteFileValues(QLatin1String(var), projectDir, vPaths, 0); }
static QString value(ProFileEvaluator &reader, const QString &variable) { QStringList vals = reader.values(variable); if (!vals.isEmpty()) return vals.first(); return QString(); }
void evaluateProFile(const ProFileEvaluator &visitor, QHash<QByteArray, QStringList> *varMap, const QString &projectDir) { QStringList baseVPaths; baseVPaths += visitor.absolutePathValues(QLatin1String("VPATH"), projectDir); baseVPaths << projectDir; // QMAKE_ABSOLUTE_SOURCE_PATH baseVPaths += visitor.absolutePathValues(QLatin1String("DEPENDPATH"), projectDir); baseVPaths.removeDuplicates(); QStringList sourceFiles; QString codecForTr; QString codecForSource; QStringList tsFileNames; // app/lib template sourceFiles += getSources("SOURCES", "VPATH_SOURCES", baseVPaths, projectDir, visitor); sourceFiles += getSources("FORMS", "VPATH_FORMS", baseVPaths, projectDir, visitor); sourceFiles += getSources("FORMS3", "VPATH_FORMS3", baseVPaths, projectDir, visitor); QStringList vPathsInc = baseVPaths; vPathsInc += visitor.absolutePathValues(QLatin1String("INCLUDEPATH"), projectDir); vPathsInc.removeDuplicates(); sourceFiles += visitor.absoluteFileValues(QLatin1String("HEADERS"), projectDir, vPathsInc, 0); QDir proDir(projectDir); foreach (const QString &tsFile, visitor.values(QLatin1String("TRANSLATIONS"))) tsFileNames << QFileInfo(proDir, tsFile).filePath(); QStringList trcodec = visitor.values(QLatin1String("CODEC")) + visitor.values(QLatin1String("DEFAULTCODEC")) + visitor.values(QLatin1String("CODECFORTR")); if (!trcodec.isEmpty()) codecForTr = trcodec.last(); QStringList srccodec = visitor.values(QLatin1String("CODECFORSRC")); if (!srccodec.isEmpty()) codecForSource = srccodec.last(); sourceFiles.sort(); sourceFiles.removeDuplicates(); tsFileNames.sort(); tsFileNames.removeDuplicates(); varMap->insert("SOURCES", sourceFiles); varMap->insert("CODECFORTR", QStringList() << codecForTr); varMap->insert("CODECFORSRC", QStringList() << codecForSource); varMap->insert("TRANSLATIONS", tsFileNames); }
bool evaluateProFile(const QString &fileName, bool verbose, QHash<QByteArray, QStringList> *varMap) { QFileInfo fi(fileName); if (!fi.exists()) return false; ProFile pro(fi.absoluteFilePath()); ProFileEvaluator visitor; visitor.setVerbose(verbose); if (!visitor.queryProFile(&pro)) return false; if (!visitor.accept(&pro)) return false; evaluateProFile(visitor, varMap, fi.absolutePath()); return true; }