summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-11 14:01:57 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-12 12:05:21 +0200
commit5700438067ae6ba6dcd7a5b6fa30face85805494 (patch)
tree1876024ce9edc453e4d8e91224c0b92905aace1d
parent21d18270ca5e34e4a6e4fde438cbb80a1344f240 (diff)
downloadqttools-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.cpp17
-rw-r--r--src/windeployqt/utils.cpp21
-rw-r--r--src/windeployqt/utils.h1
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);