Qt
Qt-toepassingen implementeren
Zoeken…
Inzetten op Windows
Qt biedt een implementatietool voor Windows: windeployqt
. De tool inspecteert een uitvoerbare Qt-toepassing op zijn afhankelijkheden naar Qt-modules en maakt een implementatiemap met de benodigde Qt-bestanden om het gecontroleerde uitvoerbare bestand uit te voeren. Een mogelijk script kan er uitzien als:
set PATH=%PATH%;<qt_install_prefix>/bin
windeployqt --dir /path/to/deployment/dir /path/to/qt/application.exe
De opdracht set
wordt opgeroepen om de bin
directory van Qt toe te voegen aan de omgevingsvariabele PATH
. windeployqt
wordt dan genoemd:
- Het pad naar de implementatiemap krijgt een optioneel argument gegeven met de parameter
--dir
(standaard is het pad waarwindeployqt
wordt genoemd). - Het pad naar het te inspecteren uitvoerbare bestand wordt als laatste argument gegeven.
De implementatiemap kan vervolgens worden gebundeld met het uitvoerbare bestand.
NOTITIE:
Als u vooraf gecompileerde Qt5.7.0 met vs2013 op Windows gebruikt (niet zeker of alle versies dit probleem hebben) , is er een kans dat u handmatig <QTDIR>\5.7\msvc2015\qml
naar uw bin-directory van uw programma. Anders wordt het programma na het starten automatisch afgesloten.
Zie ook Qt-documentatie .
Integratie met CMake
Het is mogelijk om windeployqt
en macdeployqt
vanuit macdeployqt
uit te voeren, maar eerst moet het pad naar de uitvoerbare bestanden worden gevonden:
# 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}")
Om windeployqt
de Qt-bibliotheken op hun geïnstalleerde locatie te laten vinden, moet de map worden toegevoegd aan %PATH%
. Om dit te doen voor een doel met de naam myapp
nadat het is gebouwd:
add_custom_command(TARGET myapp POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E
env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
"$<TARGET_FILE:myapp>"
COMMENT "Running windeployqt..."
)
Voor het uitvoeren van macdeployqt
op een bundel zou dit op deze manier worden gedaan:
add_custom_command(TARGET myapp POST_BUILD
COMMAND "${MACDEPLOYQT_EXECUTABLE}"
"$<TARGET_FILE_DIR:myapp>/../.."
-always-overwrite
COMMENT "Running macdeployqt..."
)
Implementeren op Mac
Qt biedt een implementatietool voor Mac: de Mac Deployment Tool.
De Mac-implementatietool is te vinden in QTDIR/bin/macdeployqt
. Het is ontworpen om het proces van het maken van een inzetbare applicatiebundel die de Qt-bibliotheken als privé-frameworks bevat, te automatiseren.
Het Mac-implementatietool implementeert ook de Qt-plug-ins volgens de volgende regels (tenzij de optie -no-plug-ins wordt gebruikt ):
- De platforminvoegtoepassing wordt altijd geïmplementeerd.
- Foutopsporingsversies van de plug-ins worden niet geïmplementeerd.
- De designer-plug-ins worden niet geïmplementeerd.
- De plug-ins voor de afbeeldingsindeling worden altijd geïmplementeerd.
- De plug-in voor afdrukondersteuning wordt altijd geïmplementeerd.
- Plug-ins voor SQL-stuurprogramma's worden geïmplementeerd als de toepassing de Qt SQL-module gebruikt.
- Scriptplug-ins worden geïmplementeerd als de toepassing de Qt Script-module gebruikt.
- De plug-in voor het SVG-pictogram wordt geïmplementeerd als de toepassing de Qt SVG-module gebruikt.
- De toegankelijkheidsplug-in wordt altijd geïmplementeerd.
Als u een bibliotheek van derden in de toepassingsbundel wilt opnemen, kopieert u de bibliotheek handmatig naar de bundel, nadat de bundel is gemaakt.
Om het macdeployqt
hulpmiddel te gebruiken, kunt u de terminal openen en typen:
$ QTDIR/bin/macdeployqt <path to app file generated by build>/appFile.app
Het app-bestand bevat nu alle Qt-bibliotheken die als privé-frameworks worden gebruikt.
macdeployqt
ondersteunt ook de volgende opties
Optie | Beschrijving |
---|---|
-verbose = <0-3> | 0 = geen uitvoer, 1 = fout / waarschuwing (standaard), 2 = normaal, 3 = foutopsporing |
-no-plugins | Implementatie van plug-in overslaan |
-dmg | Maak een .dmg-schijfkopie |
-no-strip | Voer geen 'strip' uit op de binaire bestanden |
-gebruik-debug-libs | Implementeren met debugversies van frameworks en plug-ins (impliceert -no-strip) |
-executable = | Laat het gegeven uitvoerbare bestand ook de geïmplementeerde frameworks gebruiken |
-qmldir = | Implementeer importen die worden gebruikt door .qml-bestanden in het opgegeven pad |
Gedetailleerde informatie kan worden vermeld op Qt-documentatie
Implementeren op Linux
Er is een implementatietool voor Linux op GitHub . Hoewel niet perfect, is het gekoppeld aan vanuit de Qt-wiki. Het is conceptueel gebaseerd op de Qt Mac Deployment Tool en werkt op dezelfde manier door een AppImage aan te bieden .
Aangezien een desktopbestand moet worden voorzien van een AppImage, kan linuxdeployqt
dat gebruiken om de parameters van de build te bepalen.
linuxdeployqt ./path/to/appdir/usr/share/application_name.desktop
Waar het bureaubladbestand het uitvoerbare bestand aangeeft (met EXEC=
), de naam van de toepassing en een pictogram.