diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-07-11 14:01:57 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-07-12 12:05:21 +0200 |
commit | 5700438067ae6ba6dcd7a5b6fa30face85805494 (patch) | |
tree | 1876024ce9edc453e4d8e91224c0b92905aace1d | |
parent | 21d18270ca5e34e4a6e4fde438cbb80a1344f240 (diff) | |
download | qttools-5700438067ae6ba6dcd7a5b6fa30face85805494.tar.gz |
windeployqt: Add option -libdir for a library target path.
Change-Id: Ic135caf1857c6372313f35abb7d4b61152b9cc8c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/windeployqt/main.cpp | 17 | ||||
-rw-r--r-- | src/windeployqt/utils.cpp | 21 | ||||
-rw-r--r-- | src/windeployqt/utils.h | 1 |
3 files changed, 37 insertions, 2 deletions
diff --git a/src/windeployqt/main.cpp b/src/windeployqt/main.cpp index eaa8d9e95..fc43f4370 100644 --- a/src/windeployqt/main.cpp +++ b/src/windeployqt/main.cpp @@ -161,6 +161,7 @@ struct Options { unsigned additionalLibraries; unsigned disabledLibraries; QString directory; + QString libraryDirectory; QString binary; }; @@ -171,6 +172,7 @@ static QByteArray usage() "a Windows/WinRT application to the build-directory.\n\n" "<file> is an executable file or build directory.\n\n" "Options:\n" +" -libdir <path> : Copy libraries to <path>\n" " -no-plugins : Skip plugin deployment\n" " -no-libraries : Skip library deployment\n" " -no-quick-imports : Skip deployment of Qt Quick imports\n" @@ -190,8 +192,13 @@ static inline bool parseOption(QStringList::ConstIterator &it, const QStringList::ConstIterator &end, Options *options) { - Q_UNUSED(end) const QString &option = *it; + if (option == QLatin1String("-libdir")) { + if (++it == end) + return false; + options->libraryDirectory = *it; + return true; + } if (option == QLatin1String("-no-plugins")) { options->plugins = false; return true; @@ -670,8 +677,14 @@ static DeployResult deploy(const Options &options, // Update libraries if (options.libraries) { + QString targetPath = options.directory; + if (!options.libraryDirectory.isEmpty()) { + if (!createDirectory(options.libraryDirectory, errorMessage)) + return result; + targetPath = options.libraryDirectory; + } foreach (const QString &qtLib, deployedQtLibraries) { - if (!updateFile(qtLib, options.directory, errorMessage)) + if (!updateFile(qtLib, targetPath, errorMessage)) return result; } } // optLibraries diff --git a/src/windeployqt/utils.cpp b/src/windeployqt/utils.cpp index 9406ea78d..8ac5ff963 100644 --- a/src/windeployqt/utils.cpp +++ b/src/windeployqt/utils.cpp @@ -87,6 +87,27 @@ bool createSymbolicLink(const QFileInfo &source, const QString &target, QString return true; } +bool createDirectory(const QString &directory, QString *errorMessage) +{ + const QFileInfo fi(directory); + if (fi.isDir()) + return true; + if (fi.exists()) { + *errorMessage = QString::fromLatin1("%1 already exists and is not a directory."). + arg(QDir::toNativeSeparators(directory)); + return false; + } + if (optVerboseLevel) + std::fprintf(stderr, "Creating %s...\n", qPrintable(QDir::toNativeSeparators(directory))); + QDir dir; + if (!dir.mkpath(directory)) { + *errorMessage = QString::fromLatin1("Could not create directory %1."). + arg(QDir::toNativeSeparators(directory)); + return false; + } + return true; +} + #ifdef Q_OS_WIN QString winErrorMessage(unsigned long error) { diff --git a/src/windeployqt/utils.h b/src/windeployqt/utils.h index 86dd01121..7195b4a2e 100644 --- a/src/windeployqt/utils.h +++ b/src/windeployqt/utils.h @@ -61,6 +61,7 @@ inline QString normalizeFileName(const QString &name) { return name; } #endif // !Q_OS_WIN bool createSymbolicLink(const QFileInfo &source, const QString &target, QString *errorMessage); +bool createDirectory(const QString &directory, QString *errorMessage); QString findInPath(const QString &file); QMap<QString, QString> queryQMakeAll(QString *errorMessage); QString queryQMake(const QString &variable, QString *errorMessage); |