Sur cette page

qt_generate_deploy_app_script

Générer un script de déploiement pour une application.

La commande est définie dans le composant « Core » du paquet « Qt6 », qui peut être chargé comme suit :

find_package(Qt6 REQUIRED COMPONENTS Core)

Cette commande a été introduite dans Qt 6.3.

Remarque : cette commande n'est actuellement prise en charge que sous Windows, macOS et Linux.

Syntaxe

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...]
)

Si les commandes sans version sont désactivées, utilisez plutôt ` qt6_generate_deploy_app_script() `. Elle prend en charge le même ensemble d’arguments que cette commande.

Description

L'installation d'une cible exécutable avec install(TARGETS) n'installe que l'exécutable de la cible (à l'exception des bundles d'applications macOS, qui copient l'intégralité du bundle). Vous devez installer vous-même, de manière explicite, toutes les autres bibliothèques ou plugins dont dépend l'exécutable. qt_generate_deploy_app_script() est une commande pratique destinée à simplifier ce processus. Elle suppose que l’application respecte assez fidèlement la structure de répertoires d’installation recommandée par Qt. Cette structure est basée sur la disposition d’installation par défaut de CMake, telle que définie par GNUInstallDirs (à l’exception des bundles d’applications macOS, qui suivent plutôt les exigences d’Apple).

La commande génère un script dont le nom sera stocké dans la variable spécifiée par l’option OUTPUT_SCRIPT. Ce script n’est créé qu’au moment de la génération par CMake. Il est destiné à être utilisé avec la commande install(SCRIPT), qui doit intervenir après l’installation de la cible de l’application à l’aide de install(TARGETS).

Le script de déploiement appellera qt_deploy_runtime_dependencies() avec un ensemble d’options adapté à la structure d’installation standard. Actuellement, cela n’est implémenté que pour les

  • les bundles d’applications macOS compilés sur un hôte macOS,
  • les exécutables Linux compilés sur un hôte Linux,
  • et les exécutables Windows compilés sur un hôte Windows.

La compilation croisée d’un exécutable Windows sur un hôte Linux, ainsi que les scénarios similaires, ne sont actuellement pas pris en charge. L’appel de ` qt_generate_deploy_app_script() ` dans un tel cas entraînera une erreur fatale, à moins que l’option ` NO_UNSUPPORTED_PLATFORM_ERROR ` ne soit spécifiée.

Sur les plateformes autres que macOS, les traductions Qt sont automatiquement déployées. Pour désactiver ce comportement, spécifiez ` NO_TRANSLATIONS`. Utilisez `qt_deploy_translations()` pour déployer les traductions de manière personnalisée.

Pour les applications de bureau Windows, les fichiers d'exécution requis pour le compilateur sont également installés par défaut. Pour empêcher cela, spécifiez ` NO_COMPILER_RUNTIME`.

Depuis Qt 6.7, vous pouvez utiliser ` DEPLOY_TOOL_OPTIONS ` pour transmettre des options supplémentaires à l’outil de déploiement sous-jacent. Cela n’a d’effet que si l’outil de déploiement sous-jacent est soit `macdeployqt`, soit `windeployqt`.

Remarque : une valeur contenant des espaces, comme une identité de signature de code, n’est transmise telle quelle à l’outil de déploiement que si QTP0007 est défini sur NEW. Avec le comportement « OLD », une telle valeur est écrite dans le script généré sans guillemets et est fractionnée au niveau des espaces, ce à quoi les projets remédiaient auparavant en ajoutant un niveau supplémentaire de guillemets. Supprimez ces guillemets supplémentaires lorsque vous définissez la politique sur « NEW ».

Remarque : la valeur « qt_generate_deploy_app_script() » (sans version) transmet ses arguments via une fonction ou une macro, selon la valeur de QTP0008. Avec le comportement « OLD », une valeur contenant une barre oblique inversée ou une référence « ${var} » est évaluée au moment de l’expansion de la macro ; ainsi, une expression régulière telle que « foo\\.dylib » perd un niveau d’échappement. Cela affecte « DEPLOY_TOOL_OPTIONS » ainsi que les arguments d’expression régulière et de liste de fichiers. L'appel direct de ` qt6_generate_deploy_app_script() ` permet d'éviter ce problème.

Pour déployer une application QML, utilisez plutôt qt_generate_deploy_qml_app_script().

Pour générer un script de déploiement personnalisé, utilisez qt_generate_deploy_script().

Les options PRE_INCLUDE_REGEXES, PRE_EXCLUDE_REGEXES, POST_INCLUDE_REGEXES, POST_EXCLUDE_REGEXES, POST_INCLUDE_FILES et POST_EXCLUDE_FILES peuvent être spécifiées pour contrôler le déploiement des dépendances d’exécution. Ces options ne s’appliquent pas à toutes les plateformes et sont transmises telles quelles à qt_deploy_runtime_dependencies().

Les options EXCLUDE_PLUGINS, EXCLUDE_PLUGIN_TYPES, INCLUDE_PLUGINS et INCLUDE_PLUGIN_TYPES permettent de sélectionner des plugins Qt. Reportez-vous à la documentation de qt_deploy_runtime_dependencies() pour plus d'informations.

Vous pouvez désactiver complètement le déploiement des plugins à l’aide de l’option NO_PLUGINS.

Exemple

L'exemple suivant montre comment déployer une application à l'aide de ` MyApp`.

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})

L’exemple suivant montre comment utiliser le paramètre ` DEPLOY_TOOL_OPTIONS ` pour transmettre différentes options à `macdeployqt` et `windeployqt`.

# 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})

Voir également qt_standard_project_setup(), qt_generate_deploy_script(), qt_generate_deploy_qml_app_script(), QTP0007 et 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.