Auf dieser Seite

qt_generate_deploy_app_script

Ein Deployment-Skript für eine Anwendung generieren.

Der Befehl ist in der Komponente „ Core “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Core)

Dieser Befehl wurde in Qt 6.3 eingeführt.

Hinweis: Dieser Befehl wird derzeit nur unter Windows, macOS und Linux unterstützt.

Übersicht

qt_generate_deploy_app_script(
    TARGET target
    OUTPUT_SCRIPT <var>
    [NO_TRANSLATIONS]
    [NO_COMPILER_RUNTIME]
    [NO_UNSUPPORTED_PLATFORM_ERROR]
    [NO_PLUGINS]                                  # since Qt 6.10
    [EXCLUDE_PLUGIN_TYPES type_or_target...]      # since Qt 6.10
    [INCLUDE_PLUGIN_TYPES type_or_target...]      # since Qt 6.10
    [EXCLUDE_PLUGINS name...]                     # since Qt 6.10
    [INCLUDE_PLUGINS name...]                     # since Qt 6.10
    [DEPLOY_TOOL_OPTIONS ...]
    [PRE_INCLUDE_REGEXES regexes...]
    [PRE_EXCLUDE_REGEXES regexes...]
    [POST_INCLUDE_REGEXES regexes...]
    [POST_EXCLUDE_REGEXES regexes...]
    [POST_INCLUDE_FILES files...]
    [POST_EXCLUDE_FILES files...]
)

Wenn versionsunabhängige Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_generate_deploy_app_script() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.

Beschreibung

Die Installation eines ausführbaren Ziels mit `install(TARGETS)` installiert nur die ausführbare Datei des Ziels (mit Ausnahme von macOS-App-Bundles, bei denen das gesamte Bundle kopiert wird). Alle anderen Bibliotheken oder Plugins, von denen die ausführbare Datei abhängt, müssen Sie explizit selbst installieren. ` qt_generate_deploy_app_script() ` ist ein Komfortbefehl, der diesen Vorgang vereinfachen soll. Er setzt voraus, dass die Anwendung die von Qt empfohlene Installationsverzeichnisstruktur weitgehend einhält. Diese Struktur basiert auf dem Standard-Installationslayout von CMake, wie es durch GNUInstallDirs festgelegt wird (mit Ausnahme von macOS-App-Bundles, die stattdessen den Anforderungen von Apple folgen).

Der Befehl generiert ein Skript, dessen Name in der durch die Option „ OUTPUT_SCRIPT “ angegebenen Variablen gespeichert wird. Dieses Skript wird nur zum Zeitpunkt der CMake-Generierung geschrieben. Es ist für die Verwendung mit dem Befehl `install(SCRIPT)` vorgesehen, der ausgeführt werden sollte, nachdem das Ziel der Anwendung mit `install(TARGETS)` installiert wurde.

Das Bereitstellungsskript ruft ` qt_deploy_runtime_dependencies() ` mit einer geeigneten Auswahl an Optionen für das Standard-Installationslayout auf. Derzeit ist dies nur für

  • macOS-App-Bundles, die auf einem macOS-Host erstellt wurden,
  • Linux-Ausführungsdateien, die auf einem Linux-Host erstellt wurden,
  • sowie Windows-Ausführungsdateien, die auf einem Windows-Host erstellt wurden.

Das plattformübergreifende Erstellen einer Windows-Ausführungsdatei auf einem Linux-Host sowie ähnliche Szenarien werden derzeit nicht unterstützt. Der Aufruf von ` qt_generate_deploy_app_script() ` führt in einem solchen Fall zu einem schwerwiegenden Fehler, es sei denn, die Option ` NO_UNSUPPORTED_PLATFORM_ERROR ` wird angegeben.

Auf anderen Plattformen als macOS werden Qt-Übersetzungen automatisch bereitgestellt. Um dieses Verhalten zu unterbinden, geben Sie „ NO_TRANSLATIONS “ an. Verwenden Sie „qt_deploy_translations()“, um Übersetzungen auf individuelle Weise bereitzustellen.

Bei Windows-Desktop-Anwendungen werden standardmäßig auch die für den Compiler erforderlichen Laufzeitdateien installiert. Um dies zu verhindern, geben Sie „ NO_COMPILER_RUNTIME “ an.

Seit Qt 6.7 können Sie mit ` DEPLOY_TOOL_OPTIONS ` zusätzliche Optionen an das zugrunde liegende Bereitstellungstool übergeben. Dies hat nur dann Auswirkungen, wenn das zugrunde liegende Bereitstellungstool entweder `macdeployqt` oder `windeployqt` ist.

Hinweis: Ein Wert, der Leerzeichen enthält – wie beispielsweise eine Code-Signatur-Identität – gelangt nur dann unverändert an das Deployment-Tool, wenn QTP0007 auf „ NEW “ gesetzt ist. Beim Verhalten „ OLD “ wird ein solcher Wert ohne Anführungszeichen in das generierte Skript geschrieben und an Leerzeichen getrennt; Projekte umgingen dies früher durch Hinzufügen einer weiteren Ebene von Anführungszeichen. Entfernen Sie diese zusätzliche Anführungszeichen-Ebene, wenn Sie die Richtlinie auf „ NEW “ setzen.

Hinweis: Die versionloseEinstellung „ qt_generate_deploy_app_script() “ leitet ihre Argumente je nach dem Wert von QTP0008 entweder über eine Funktion oder ein Makro weiter. Bei der Einstellung „ OLD “ wird ein Wert, der einen Backslash oder eine „ ${var} “-Referenz enthält, zum Zeitpunkt der Makroauswertung ausgewertet, sodass ein regulärer Ausdruck wie „ foo\\.dylib “ eine Ebene der Escape-Zeichen verliert. Dies betrifft „ DEPLOY_TOOL_OPTIONS “ sowie die Argumente für reguläre Ausdrücke und Dateilisten. Durch den direkten Aufruf von ` qt6_generate_deploy_app_script() ` lässt sich dieses Problem vermeiden.

Verwenden Sie zum Bereitstellen einer QML-Anwendung stattdessen ` qt_generate_deploy_qml_app_script() `.

Verwenden Sie zum Erstellen eines benutzerdefinierten Bereitstellungsskripts qt_generate_deploy_script().

Die Optionen PRE_INCLUDE_REGEXES, PRE_EXCLUDE_REGEXES, POST_INCLUDE_REGEXES, POST_EXCLUDE_REGEXES, POST_INCLUDE_FILES und POST_EXCLUDE_FILES können angegeben werden, um die Bereitstellung von Laufzeitabhängigkeiten zu steuern. Diese Optionen gelten nicht für alle Plattformen und werden unverändert an qt_deploy_runtime_dependencies() weitergeleitet.

Die Optionen „ EXCLUDE_PLUGINS “, „ EXCLUDE_PLUGIN_TYPES “, „ INCLUDE_PLUGINS “ und „ INCLUDE_PLUGIN_TYPES “ dienen zur Auswahl von Qt-Plugins. Die Dokumentation dazu finden Sie unter „qt_deploy_runtime_dependencies() “.

Mit der Option „ NO_PLUGINS “ können Sie die Plugin-Bereitstellung vollständig deaktivieren.

Beispiel

Das folgende Beispiel zeigt, wie eine Anwendung mit „ MyApp “ bereitgestellt wird.

cmake_minimum_required(VERSION 3.16...3.22)
project(MyThings)

find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()

qt_add_executable(MyApp main.cpp)

install(TARGETS MyApp
    BUNDLE  DESTINATION .
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

Das folgende Beispiel zeigt, wie man den Parameter „ DEPLOY_TOOL_OPTIONS “ verwendet, um verschiedene Optionen an „macdeployqt“ und „windeployqt“ zu übergeben.

# Pass the values on to the deploy tool unchanged, see \l {QTP0007}.
qt_policy(SET QTP0007 NEW)

set(deploy_tool_options_arg "")
if(APPLE)
    set(deploy_tool_options_arg
        -hardened-runtime
        "-codesign=Developer ID Application: Joe Developer (1234567890)"
    )
elseif(WIN32)
    set(deploy_tool_options_arg --no-compiler-runtime)
endif()

qt_generate_deploy_app_script(
    TARGET MyApp
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
    DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg}
)
install(SCRIPT ${deploy_script})

Siehe auch qt_standard_project_setup(), qt_generate_deploy_script(), qt_generate_deploy_qml_app_script(), QTP0007 und QTP0008.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.