qt_generate_deploy_app_script

Erzeugt ein Deployment-Skript für eine Anwendung.

Der Befehl ist in der Core Komponente des Qt6 Pakets definiert, das so 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.

Synopse

qt_generate_deploy_app_script(
    TARGET target
    OUTPUT_SCRIPT <var>
    [NO_TRANSLATIONS]
    [NO_COMPILER_RUNTIME]
    [NO_UNSUPPORTED_PLATFORM_ERROR]
    [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 versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_generate_deploy_app_script(). Er unterstützt die gleichen Argumente wie dieser Befehl.

Beschreibung

Bei der Installation eines ausführbaren Ziels mit install(TARGETS) wird nur die ausführbare Datei des Ziels installiert (außer bei macOS-App-Bundles, bei denen das gesamte Bundle kopiert wird). Sie müssen alle anderen Bibliotheken oder Plugins, von denen die ausführbare Datei abhängt, explizit selbst installieren. qt_generate_deploy_app_script() ist ein Komfortbefehl, der diesen Prozess vereinfachen soll. Er erwartet, dass die Anwendung der von Qt empfohlenen Struktur des Installationsverzeichnisses ziemlich genau folgt. Diese Struktur basiert auf dem Standard-Installationslayout von CMake, wie es von GNUInstallDirs bestimmt wird (außer für macOS-App-Bundles, die stattdessen Apples Anforderungen folgen).

Der Befehl erzeugt ein Skript, dessen Name in der durch die Option OUTPUT_SCRIPT benannten Variable gespeichert wird. Dieses Skript wird nur zur Zeit der CMake-Generierung geschrieben. Es ist dafür gedacht, mit dem install(SCRIPT) -Befehl verwendet zu werden, der nach der Installation des Ziels der Anwendung mit install(TARGETS) erfolgen sollte.

Das Deployment-Skript wird qt_deploy_runtime_dependencies() mit einem geeigneten Satz von Optionen für das Standard-Installationslayout aufrufen. Momentan ist dies nur implementiert für

  • macOS-App-Bundles, die auf einem macOS-Host erstellt wurden,
  • ausführbare Linux-Programme, die auf einem Linux-Host erstellt wurden,
  • und ausführbare Windows-Programme, die auf einem Windows-Host erstellt wurden.

Das Cross-Building einer ausführbaren Windows-Datei 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 fatalen 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 eine angepasste Weise bereitzustellen.

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

Seit Qt 6.7 können Sie DEPLOY_TOOL_OPTIONS verwenden, um zusätzliche Optionen an das zugrunde liegende Deployment-Tool zu übergeben. Dies hat nur eine Auswirkung, wenn das zugrunde liegende Deployment-Tool entweder macdeployqt oder windeployqt ist.

Um eine QML-Anwendung bereitzustellen, verwenden Sie stattdessen qt_generate_deploy_qml_app_script().

Um ein benutzerdefiniertes Deployment-Skript zu erzeugen, verwenden Sie 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() weitergegeben.

Beispiel

Das folgende Beispiel zeigt, wie eine Anwendung 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.

set(deploy_tool_options_arg "")
if(APPLE)
    set(deploy_tool_options_arg --hardened-runtime)
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(), und qt_generate_deploy_qml_app_script().

© 2025 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.