windeployqt: Concatenate qmlimportscanner results.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Fri, 13 Dec 2013 09:18:00 +0000 (11:18 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 13 Dec 2013 09:32:51 +0000 (10:32 +0100)
Fix up f5b851f83cfb315bbc87ef878bde0b2573f225cf introducing
multiple values for the -qmldir option.

Change-Id: Ib199105776d42b6eaa81003ed5682b2272a19a53
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
src/windeployqt/main.cpp
src/windeployqt/qmlutils.cpp
src/windeployqt/qmlutils.h

index b3b1e9a..c53ba48 100644 (file)
@@ -735,9 +735,10 @@ static DeployResult deploy(const Options &options,
         foreach (const QString &qmlDirectory, qmlDirectories) {
             if (optVerboseLevel >= 1)
                 std::printf("Scanning %s:\n", qPrintable(QDir::toNativeSeparators(qmlDirectory)));
-            qmlScanResult = runQmlImportScanner(qmlDirectory, qmakeVariables.value(QStringLiteral("QT_INSTALL_QML")), options.platform, isDebug, errorMessage);
-            if (!qmlScanResult.ok)
+            const QmlImportScanResult scanResult = runQmlImportScanner(qmlDirectory, qmakeVariables.value(QStringLiteral("QT_INSTALL_QML")), options.platform, isDebug, errorMessage);
+            if (!scanResult.ok)
                 return result;
+            qmlScanResult.append(scanResult);
             // Additional dependencies of QML plugins.
             foreach (const QString &plugin, qmlScanResult.plugins) {
                 if (!findDependentQtLibraries(libraryLocation, plugin, options.platform, errorMessage, &dependentQtLibs, &wordSize, &isDebug))
index 2a41f8a..8e16a95 100644 (file)
@@ -128,4 +128,16 @@ QmlImportScanResult runQmlImportScanner(const QString &directory, const QString
     return result;
 }
 
+void QmlImportScanResult::append(const QmlImportScanResult &other)
+{
+    foreach (const QString &module, other.modulesDirectories) {
+        if (!modulesDirectories.contains(module))
+            modulesDirectories.append(module);
+    }
+    foreach (const QString &plugin, other.plugins) {
+        if (!plugin.contains(plugin))
+            plugins.append(plugin);
+    }
+}
+
 QT_END_NAMESPACE
index 0d7c6cc..ea8c774 100644 (file)
@@ -50,6 +50,7 @@ QString findQmlDirectory(int platform, const QString &startDirectoryName);
 
 struct QmlImportScanResult {
     QmlImportScanResult() : ok(false) {}
+    void append(const QmlImportScanResult &other);
 
     bool ok;
     QStringList modulesDirectories;