diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2015-09-28 17:11:28 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2016-01-08 18:14:45 +0000 |
commit | a49cb9f3dac9cde39094d4f79944aefe6afca825 (patch) | |
tree | e5631245c3d9d7c1fbe414bcbfd63807414bfdab | |
parent | 08756d470b7603fdf4534e50d40ef08706c792e2 (diff) |
windeployqt: Add support for --plugindir
This allows the Qt plugins to be placed somewhere other than the root
dir. The plugin dir structure is required if your qt.conf does not
contain a PluginPath.
Change-Id: I42e7ef1a481840699a8dffff14084a674886acca
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
-rw-r--r-- | src/windeployqt/main.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp index adca817f8..28f636f83 100644 --- a/src/windeployqt/main.cpp +++ b/src/windeployqt/main.cpp @@ -273,6 +273,7 @@ struct Options { QString directory; QString translationsDirectory; // Translations target directory QString libraryDirectory; + QString pluginDirectory; QStringList binaries; JsonOutput *json; ListOption list; @@ -338,6 +339,11 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse QStringLiteral("path")); parser->addOption(libDirOption); + QCommandLineOption pluginDirOption(QStringLiteral("plugindir"), + QStringLiteral("Copy plugins to path."), + QStringLiteral("path")); + parser->addOption(pluginDirOption); + QCommandLineOption debugOption(QStringLiteral("debug"), QStringLiteral("Assume debug binaries.")); parser->addOption(debugOption); @@ -467,6 +473,7 @@ static inline int parseArguments(const QStringList &arguments, QCommandLineParse } options->libraryDirectory = parser->value(libDirOption); + options->pluginDirectory = parser->value(pluginDirOption); options->plugins = !parser->isSet(noPluginsOption); options->libraries = !parser->isSet(noLibraryOption); options->translations = !parser->isSet(noTranslationOption); @@ -1364,18 +1371,25 @@ static DeployResult deploy(const Options &options, // Update plugins if (options.plugins) { - QDir dir(options.directory); + const QString targetPath = options.pluginDirectory.isEmpty() ? + options.directory : options.pluginDirectory; + QDir dir(targetPath); + if (!dir.exists() && !dir.mkpath(QStringLiteral("."))) { + *errorMessage = QLatin1String("Cannot create ") + + QDir::toNativeSeparators(dir.absolutePath()) + QLatin1Char('.'); + return result; + } foreach (const QString &plugin, plugins) { const QString targetDirName = plugin.section(slash, -2, -2); + const QString targetPath = dir.absoluteFilePath(targetDirName); if (!dir.exists(targetDirName)) { if (optVerboseLevel) - std::wcout << "Creating directory " << targetDirName << ".\n"; + std::wcout << "Creating directory " << targetPath << ".\n"; if (!(options.updateFileFlags & SkipUpdateFile) && !dir.mkdir(targetDirName)) { *errorMessage = QStringLiteral("Cannot create ") + targetDirName + QLatin1Char('.'); return result; } } - const QString targetPath = options.directory + slash + targetDirName; if (!updateLibrary(plugin, targetPath, options, errorMessage)) return result; } |