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 waarwindeployqtwordt 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.