Qt
Qt-Anwendungen bereitstellen
Suche…
Bereitstellung unter Windows
Qt stellt ein Bereitstellungstool für Windows windeployqt
: windeployqt
. Das Tool untersucht eine ausführbare Qt-Anwendungsdatei auf ihre Abhängigkeiten zu Qt-Modulen und erstellt ein Bereitstellungsverzeichnis mit den erforderlichen Qt-Dateien, um die geprüfte ausführbare Datei auszuführen. Ein mögliches Skript könnte wie folgt aussehen:
set PATH=%PATH%;<qt_install_prefix>/bin
windeployqt --dir /path/to/deployment/dir /path/to/qt/application.exe
Der Befehl set
wird aufgerufen, um das bin
Verzeichnis von Qt der Umgebungsvariable PATH
hinzuzufügen. windeployqt
heißt dann:
- Der Pfad zum Implementierungsverzeichnis erhält ein optionales Argument, das mit dem Parameter
--dir
(Standardwert ist der Pfad, in demwindeployqt
aufgerufen wird). - Der Pfad zur zu prüfenden ausführbaren Datei wird als letztes Argument angegeben.
Das Implementierungsverzeichnis kann dann mit der ausführbaren Datei gebündelt werden.
HINWEIS:
Wenn Sie vorkompiliertes Qt5.7.0 mit vs2013 unter Windows verwenden (nicht sicher, ob alle Versionen dieses Problem aufweisen) , besteht die Möglichkeit, dass Sie <QTDIR>\5.7\msvc2015\qml
in Ihr bin-Verzeichnis von <QTDIR>\5.7\msvc2015\qml
Ihr Programm Andernfalls wird das Programm nach dem Start automatisch beendet.
Siehe auch Qt-Dokumentation .
Integration mit CMake
windeployqt
und macdeployqt
von CMake aus ausgeführt werden, aber zuerst muss der Pfad zu den ausführbaren Dateien gefunden werden:
# Retrieve the absolute path to qmake and then use that path to find
# the binaries
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
Damit windeployqt
die Qt-Bibliotheken an ihrem installierten Speicherort finden kann, muss der Ordner %PATH%
hinzugefügt werden. Um dies für ein Ziel namens myapp
zu myapp
nachdem es erstellt wurde:
add_custom_command(TARGET myapp POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E
env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
"$<TARGET_FILE:myapp>"
COMMENT "Running windeployqt..."
)
Um macdeployqt
auf einem Bundle macdeployqt
, gehen Sie folgendermaßen vor:
add_custom_command(TARGET myapp POST_BUILD
COMMAND "${MACDEPLOYQT_EXECUTABLE}"
"$<TARGET_FILE_DIR:myapp>/../.."
-always-overwrite
COMMENT "Running macdeployqt..."
)
Bereitstellung auf dem Mac
Qt bietet ein Bereitstellungstool für Mac an: Das Mac-Bereitstellungstool.
Das Mac-Bereitstellungstool befindet sich in QTDIR/bin/macdeployqt
. Es soll die Erstellung eines bereitstellbaren Anwendungspakets automatisieren, das die Qt-Bibliotheken als private Frameworks enthält.
Das Mac-Bereitstellungstool stellt auch die Qt-Plugins gemäß den folgenden Regeln bereit (sofern die Option -no-plugins nicht verwendet wird ):
- Das Plattform-Plugin wird immer bereitgestellt.
- Debug-Versionen der Plugins werden nicht bereitgestellt.
- Die Designer-Plugins werden nicht bereitgestellt.
- Die Plugins für das Image-Format werden immer bereitgestellt.
- Das Print Support Plugin wird immer bereitgestellt.
- SQL-Treiber-Plugins werden bereitgestellt, wenn die Anwendung das Qt-SQL-Modul verwendet.
- Skript-Plugins werden bereitgestellt, wenn die Anwendung das Qt-Skriptmodul verwendet.
- Das SVG-Symbol-Plugin wird bereitgestellt, wenn die Anwendung das Qt-SVG-Modul verwendet.
- Das Plug-in für Eingabehilfen wird immer bereitgestellt.
Um eine Drittanbieter-Bibliothek in das Anwendungspaket aufzunehmen, kopieren Sie die Bibliothek manuell in das Paket, nachdem das Paket erstellt wurde.
Um das macdeployqt
Tool zu verwenden, können Sie das Terminal öffnen und macdeployqt
:
$ QTDIR/bin/macdeployqt <path to app file generated by build>/appFile.app
Die App-Datei enthält nun alle Qt-Bibliotheken, die als private Frameworks verwendet werden.
macdeployqt
unterstützt auch die folgenden Optionen
Möglichkeit | Beschreibung |
---|---|
-verbose = <0-3> | 0 = keine Ausgabe, 1 = Fehler / Warnung (Standard), 2 = normal, 3 = Debug |
-keine Plugins | Überspringen Sie die Plugin-Bereitstellung |
-dmg | Erstellen Sie ein .dmg-Image |
-kein-streifen | Führen Sie auf den Binärdateien keinen "Strip" aus |
-use-debug-libs | Bereitstellung mit Debug-Versionen von Frameworks und Plugins (impliziert -no-strip) |
-executable = | Lassen Sie die angegebene ausführbare Datei auch die bereitgestellten Frameworks verwenden |
-qmldir = | Stellen Sie Importe bereit, die von .qml-Dateien im angegebenen Pfad verwendet werden |
Detaillierte Informationen können Sie der Qt-Dokumentation entnehmen
Bereitstellung unter Linux
Es gibt ein Deployment-Tool für Linux auf GitHub . Obwohl es nicht perfekt ist, ist es mit dem Qt-Wiki verbunden. Sie basiert konzeptionell auf dem Qt Mac Deployment Tool und funktioniert ähnlich, indem ein AppImage bereitgestellt wird.
Da eine Desktop-Datei mit einem AppImage linuxdeployqt
kann linuxdeployqt
diese verwenden, um die Parameter des linuxdeployqt
zu bestimmen.
linuxdeployqt ./path/to/appdir/usr/share/application_name.desktop
Die Desktop-Datei gibt die ausführbare Datei (mit EXEC=
), den Namen der Anwendung und ein Symbol an.