qt_finalize_target
Gère diverses tâches courantes spécifiques à la plate-forme associées aux cibles Qt.
Cette 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.2.
Synopsis
qt_finalize_target(target)Si les commandes sans version sont désactivées, utilisez plutôt ` qt6_finalize_target() `. Elle prend en charge le même ensemble d'arguments que cette commande.
Description
Une fois une cible créée, des étapes de traitement supplémentaires ou de finalisation sont parfois nécessaires. Les étapes à effectuer dépendent de la plate-forme, du type de cible et de diverses propriétés de celle-ci. Ces étapes doivent être effectuées dans le même répertoire que celui où la commande « target » a été exécutée ; cette commande doit donc également être appelée à partir de ce même répertoire.
Cette commande est généralement invoquée dans le cadre d’un appel à `qt_add_executable()`, `qt_add_library()` ou `qt_add_plugin()`. Le moment où cet appel a lieu et les cas où un projet peut avoir besoin de l’appeler explicitement sont abordés dans la documentation de ces commandes.
Cibles exécutables
Pour les cibles exécutables, la fonction ` qt_finalize_target() ` met en œuvre la logique décrite dans les sous-sections ci-dessous, en fonction de la plate-forme et de la cible fournies. Les versions ultérieures de Qt pourraient étendre davantage le traitement de finalisation.
Toutes les plateformes
Un traitement interne est effectué pour faciliter la liaison automatique des plugins Qt. Ceci est particulièrement important si vous utilisez une version de Qt compilée de manière statique ou une version de CMake antérieure à la 3.21.
Android
- Générez un fichier de paramètres de déploiement pour l'
target. - Créez une cible de compilation pour générer un fichier APK.
WASM
Créez les fichiers « ${target}.html » (un fichier « wasm_shell.html » spécifique à la cible), « qtloader.js » et « qtlogo.svg » dans le répertoire « CMAKE_CURRENT_BINARY_DIR ».
iOS
La finalisation tente de fournir des valeurs raisonnables pour les propriétés de cible suivantes si elles ne sont pas déjà définies et si la variable CMAKE_... correspondante n’est pas non plus définie :
XCODE_ATTRIBUTE_DEVELOPMENT_TEAMXCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIERMACOSX_BUNDLE_GUI_IDENTIFIER
Si nécessaire, la variable QT_NO_SET_XCODE_DEVELOPMENT_TEAM_ID peut être utilisée pour désactiver la définition de ` XCODE_ATTRIBUTE_DEVELOPMENT_TEAM`, et la variable QT_NO_SET_XCODE_BUNDLE_IDENTIFIER peut être utilisée pour désactiver la définition de ` XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER ` et ` MACOSX_BUNDLE_GUI_IDENTIFIER`.
Intégration des dépendances des bibliothèques partagées
Une application qui dépend de bibliothèques partagées ne peut se lancer que si les bibliothèques partagées auxquelles elle est liée font partie de son bundle.
Depuis Qt 6.12, le système de compilation recense les bibliothèques partagées auxquelles l'application est liée et les ajoute à la phase de compilation « XCODE_EMBED_FRAMEWORKS » de l'application, avec l'option « CODE_SIGN_ON_COPY » activée. Ce traitement s'applique aussi bien aux ensembles de bibliothèques du framework qu'aux bibliothèques « plain dylib ».
L’intégration n’est effectuée que si toutes les conditions suivantes sont remplies :
- Qt a été compilé dans une configuration de bibliothèque partagée.
- Le générateur Xcode est utilisé.
- Qt n’a pas été compilé à la fois avec une configuration de débogage et une configuration de production, car
XCODE_EMBED_FRAMEWORKSne contient qu’un seul chemin d’accès par bibliothèque et ne peut donc pas décrire les deux configurations. - La cible est un bundle d’application, et non un bundle enfant tel qu’une extension d’application. Les bundles enfants sont censés utiliser les frameworks de leur application parente.
- La propriété
XCODE_EMBED_FRAMEWORKSn’est pas encore définie sur la cible, ce qui est interprété comme un signe que le projet gère lui-même l’intégration.
Pour déployer vous-même les bibliothèques partagées, définissez la propriété QT_NO_XCODE_EMBED_FRAMEWORKS sur la cible d’application.
Pour exclure certaines bibliothèques, définissez la propriété QT_NO_XCODE_EMBED_FRAMEWORK_IN_CONSUMERS sur ces bibliothèques.
Cibles de bibliothèques
À partir de cette version de Qt, la finalisation des cibles de bibliothèque n'effectue aucun traitement. Les futures versions de Qt pourraient ajouter un traitement de finalisation pour les bibliothèques ; vous devez donc vous assurer que la finalisation est toujours appelée comme prévu.
Voir également qt_set_finalizer_mode().
© 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.