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 waar windeployqt 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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow