summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2015-09-28 17:11:28 -0700
committerThiago Macieira <thiago.macieira@intel.com>2016-01-08 18:14:45 +0000
commita49cb9f3dac9cde39094d4f79944aefe6afca825 (patch)
treee5631245c3d9d7c1fbe414bcbfd63807414bfdab
parent08756d470b7603fdf4534e50d40ef08706c792e2 (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.cpp20
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;
}