From f5b851f83cfb315bbc87ef878bde0b2573f225cf Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 12 Dec 2013 14:50:38 +0200 Subject: [PATCH] windeployqt: Change option -qmldir to accept multiple values. When deploying large applications like Qt Creator, it is then possible to restrict scanning by qmlimportscanner to the modules that actually use Quick2. Change-Id: I39d138d5f67a56b251e27c9b48b4ccee020b97aa Reviewed-by: Joerg Bornemann --- src/windeployqt/main.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp index 6a8e651..c6b1f0b 100644 --- a/src/windeployqt/main.cpp +++ b/src/windeployqt/main.cpp @@ -192,7 +192,7 @@ struct Options { unsigned additionalLibraries; unsigned disabledLibraries; unsigned updateFileFlags; - QString qmlDirectory; // Project's QML files. + QStringList qmlDirectories; // Project's QML files. QString directory; QString libraryDirectory; QString binary; @@ -356,7 +356,7 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse options->directory = parser->value(dirOption); if (parser->isSet(qmlDirOption)) - options->qmlDirectory = parser->value(qmlDirOption); + options->qmlDirectories = parser->values(qmlDirOption); const QString &file = posArgs.front(); const QFileInfo fi(QDir::cleanPath(file)); @@ -716,8 +716,15 @@ static DeployResult deploy(const Options &options, // Scan Quick2 imports QmlImportScanResult qmlScanResult; if (options.quickImports && usesQml2) { - const QString qmlDirectory = options.qmlDirectory.isEmpty() ? findQmlDirectory(options.platform, options.directory) : options.qmlDirectory; - if (!qmlDirectory.isEmpty()) { + QStringList qmlDirectories = options.qmlDirectories; + if (qmlDirectories.isEmpty()) { + const QString qmlDirectory = findQmlDirectory(options.platform, options.directory); + if (!qmlDirectory.isEmpty()) + qmlDirectories.append(qmlDirectory); + } + 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) return result; -- 2.7.4