|
@ -33,6 +33,7 @@ |
|
|
#include <stdlib.h> |
|
|
#include <stdlib.h> |
|
|
#include <QSettings> |
|
|
#include <QSettings> |
|
|
#include <QDirIterator> |
|
|
#include <QDirIterator> |
|
|
|
|
|
#include <sstream> |
|
|
|
|
|
|
|
|
int main(int argc, char **argv) |
|
|
int main(int argc, char **argv) |
|
|
{ |
|
|
{ |
|
@ -43,41 +44,61 @@ int main(int argc, char **argv) |
|
|
|
|
|
|
|
|
QString firstArgument = QString::fromLocal8Bit(argv[1]); |
|
|
QString firstArgument = QString::fromLocal8Bit(argv[1]); |
|
|
|
|
|
|
|
|
if (argc < 2 || firstArgument.startsWith("-")) { |
|
|
// print version statement
|
|
|
qDebug() << "Usage: linuxdeployqt <app-binary|desktop file> [options]"; |
|
|
std::stringstream version; |
|
|
qDebug() << ""; |
|
|
version << "linuxdeployqt " << LINUXDEPLOYQT_VERSION |
|
|
qDebug() << "Options:"; |
|
|
<< " (commit " << LINUXDEPLOYQT_GIT_COMMIT << "), " |
|
|
qDebug() << " -verbose=<0-3> : 0 = no output, 1 = error/warning (default),"; |
|
|
<< "build " << BUILD_NUMBER << " built on " << BUILD_DATE; |
|
|
qDebug() << " 2 = normal, 3 = debug"; |
|
|
qInfo().noquote() << QString::fromStdString(version.str()); |
|
|
qDebug() << " -no-plugins : Skip plugin deployment"; |
|
|
|
|
|
qDebug() << " -appimage : Create an AppImage (implies -bundle-non-qt-libs)"; |
|
|
// due to the structure of the argument parser, we have to check all arguments at first to check whether the user
|
|
|
qDebug() << " -no-strip : Don't run 'strip' on the binaries"; |
|
|
// wants to get the version only
|
|
|
qDebug() << " -bundle-non-qt-libs : Also bundle non-core, non-Qt libraries"; |
|
|
// TODO: replace argument parser with position independent, less error prone version
|
|
|
qDebug() << " -executable=<path> : Let the given executable use the deployed libraries"; |
|
|
for (int i = 0; i < argc; i++ ) { |
|
|
qDebug() << " too"; |
|
|
QString argument = argv[i]; |
|
|
qDebug() << " -qmldir=<path> : Scan for QML imports in the given path"; |
|
|
if (argument == "-version" || argument == "-V" || argument == "--version") { |
|
|
qDebug() << " -always-overwrite : Copy files even if the target file exists"; |
|
|
// can just exit normally, version has been printed above
|
|
|
qDebug() << " -qmake=<path> : The qmake executable to use"; |
|
|
return 0; |
|
|
qDebug() << " -no-translations : Skip deployment of translations."; |
|
|
} |
|
|
qDebug() << " -extra-plugins=<list> : List of extra plugins which should be deployed,"; |
|
|
} |
|
|
qDebug() << " separated by comma."; |
|
|
|
|
|
qDebug() << ""; |
|
|
if (argc < 2 || (firstArgument.startsWith("-"))) { |
|
|
qDebug() << "linuxdeployqt takes an application as input and makes it"; |
|
|
qInfo() << ""; |
|
|
qDebug() << "self-contained by copying in the Qt libraries and plugins that"; |
|
|
qInfo() << "Usage: linuxdeployqt <app-binary|desktop file> [options]"; |
|
|
qDebug() << "the application uses."; |
|
|
qInfo() << ""; |
|
|
qDebug() << ""; |
|
|
qInfo() << "Options:"; |
|
|
qDebug() << "By default it deploys the Qt instance that qmake on the $PATH points to."; |
|
|
qInfo() << " -verbose=<0-3> : 0 = no output, 1 = error/warning (default),"; |
|
|
qDebug() << "The '-qmake' option can be used to point to the qmake executable"; |
|
|
qInfo() << " 2 = normal, 3 = debug"; |
|
|
qDebug() << "to be used instead."; |
|
|
qInfo() << " -no-plugins : Skip plugin deployment"; |
|
|
qDebug() << ""; |
|
|
qInfo() << " -appimage : Create an AppImage (implies -bundle-non-qt-libs)"; |
|
|
qDebug() << "Plugins related to a Qt library are copied in with the library."; |
|
|
qInfo() << " -no-strip : Don't run 'strip' on the binaries"; |
|
|
|
|
|
qInfo() << " -bundle-non-qt-libs : Also bundle non-core, non-Qt libraries"; |
|
|
|
|
|
qInfo() << " -executable=<path> : Let the given executable use the deployed libraries"; |
|
|
|
|
|
qInfo() << " too"; |
|
|
|
|
|
qInfo() << " -qmldir=<path> : Scan for QML imports in the given path"; |
|
|
|
|
|
qInfo() << " -always-overwrite : Copy files even if the target file exists"; |
|
|
|
|
|
qInfo() << " -qmake=<path> : The qmake executable to use"; |
|
|
|
|
|
qInfo() << " -no-translations : Skip deployment of translations."; |
|
|
|
|
|
qInfo() << " -extra-plugins=<list> : List of extra plugins which should be deployed,"; |
|
|
|
|
|
qInfo() << " separated by comma."; |
|
|
|
|
|
qInfo() << " -version : Print version statement and exit."; |
|
|
|
|
|
qInfo() << ""; |
|
|
|
|
|
qInfo() << "linuxdeployqt takes an application as input and makes it"; |
|
|
|
|
|
qInfo() << "self-contained by copying in the Qt libraries and plugins that"; |
|
|
|
|
|
qInfo() << "the application uses."; |
|
|
|
|
|
qInfo() << ""; |
|
|
|
|
|
qInfo() << "By default it deploys the Qt instance that qmake on the $PATH points to."; |
|
|
|
|
|
qInfo() << "The '-qmake' option can be used to point to the qmake executable"; |
|
|
|
|
|
qInfo() << "to be used instead."; |
|
|
|
|
|
qInfo() << ""; |
|
|
|
|
|
qInfo() << "Plugins related to a Qt library are copied in with the library."; |
|
|
/* TODO: To be implemented
|
|
|
/* TODO: To be implemented
|
|
|
qDebug() << "The accessibility, image formats, and text codec"; |
|
|
qDebug() << "The accessibility, image formats, and text codec"; |
|
|
qDebug() << "plugins are always copied, unless \"-no-plugins\" is specified."; |
|
|
qDebug() << "plugins are always copied, unless \"-no-plugins\" is specified."; |
|
|
*/ |
|
|
*/ |
|
|
qDebug() << ""; |
|
|
qInfo() << ""; |
|
|
qDebug() << "See the \"Deploying Applications on Linux\" topic in the"; |
|
|
qInfo() << "See the \"Deploying Applications on Linux\" topic in the"; |
|
|
qDebug() << "documentation for more information about deployment on Linux."; |
|
|
qInfo() << "documentation for more information about deployment on Linux."; |
|
|
|
|
|
|
|
|
return 1; |
|
|
return 1; |
|
|
} |
|
|
} |
|
@ -391,6 +412,9 @@ int main(int argc, char **argv) |
|
|
int index = argument.indexOf("="); |
|
|
int index = argument.indexOf("="); |
|
|
extraQtPlugins = QString(argument.mid(index + 1)).split(","); |
|
|
extraQtPlugins = QString(argument.mid(index + 1)).split(","); |
|
|
} else if (argument.startsWith("-")) { |
|
|
} else if (argument.startsWith("-")) { |
|
|
|
|
|
LogError() << "Error: arguments must not start with --, only -" << "\n"; |
|
|
|
|
|
return 1; |
|
|
|
|
|
} else { |
|
|
LogError() << "Unknown argument" << argument << "\n"; |
|
|
LogError() << "Unknown argument" << argument << "\n"; |
|
|
return 1; |
|
|
return 1; |
|
|
} |
|
|
} |
|
|