Sur cette page

qt_set_finalizer_mode

Personnalise certains aspects de la finalisation d'une cible.

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

find_package(Qt6 REQUIRED COMPONENTS Core)

Cette commande a été introduite dans Qt 6.2.

Note : Cette commande est en avant-première technologique et peut être modifiée dans les prochaines versions.

Synopsis

qt_set_finalizer_mode(target
    ENABLE | DISABLE
    MODES modes...
)

Si les commandes sans version sont désactivées, utilisez qt6_set_finalizer_mode() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.

Description de la commande

Cette commande est utilisée pour personnaliser certains aspects de la finalisation d'une version spécifique de target. Elle n'a d'effet que si elle est appelée avant que target ne soit finalisé, ce qui se produit dans l'un des scénarios suivants :

  • Le projet appelle explicitement qt_finalize_target() pour le target. Cela signifie généralement que le mot-clé MANUAL_FINALIZATION a été passé à qt_add_executable() lorsque le target a été défini.
  • CMake 3.17 ou antérieur est utilisé, dans ce cas la finalisation se produit toujours immédiatement dans le cadre de l'appel à qt_add_executable().
  • CMake 3.18 ou plus récent est utilisé, le mot-clé MANUAL_FINALIZATION n'a pas été passé à qt_add_executable() lors de la définition de target, et la finalisation différée a été effectuée à la fin de la portée du répertoire de target.

qt_set_finalizer_mode() est utilisé pour activer ou désactiver une liste de modes, où un mode correspond à un aspect spécifique de la finalisation. Les modes de finalisation actuellement pris en charge sont les suivants :

ModeDéfautComportement de finalisation
static_pluginsActivéLorsque Qt est construit de manière statique, il crée des bibliothèques d'objets d'initialisation pour ses plugins statiques. Si target est un exécutable et que ce mode de finalisation est activé, toutes les bibliothèques d'objets d'initialisation de plugins nécessaires à target lui seront directement liées. Cela évite les cycles entre les bibliothèques statiques fournies par Qt et peut réduire le temps de liaison. Lorsque ce mode de finalisation est désactivé, chaque initialisateur de plugin est propagé via les exigences d'utilisation de sa bibliothèque Qt associée, ce qui peut provoquer des cycles. Si Qt n'est pas construit statiquement, ce mode de finalisation n'est pas pertinent et n'est pas utilisé.

L'exemple suivant suppose que vous utilisiez la bibliothèque Qt.

L'exemple suivant suppose que vous utilisez CMake 3.19 ou une version ultérieure (nécessaire pour la finalisation différée) :

qt_add_executable(my_app main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)

Le même exemple utilisant la finalisation manuelle pourrait ressembler à ceci :

qt_add_executable(my_app MANUAL_FINALIZATION main.cpp)
qt_set_finalizer_mode(my_app ENABLE MODES static_plugins)
qt_finalize_target(my_app)

Voir aussi qt_finalize_target().

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