qt_add_plugin
Crée une cible de plugin Qt.
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.0.
Synopsis
qt_add_plugin(target
[SHARED | STATIC]
[CLASS_NAME class_name]
[OUTPUT_TARGETS variable_name]
[MANUAL_FINALIZATION]
sources...
)L'option « MANUAL_FINALIZATION » et la possibilité de définir des sources ont été introduites dans Qt 6.5.
Si les commandes sans version sont désactivées, utilisez plutôt qt6_add_plugin(). Elle prend en charge le même ensemble d’arguments que cette commande.
Description
Les cibles de plugin Qt ont des exigences supplémentaires par rapport à une cible de bibliothèque CMake ordinaire. La commande qt_add_plugin() ajoute la gestion nécessaire pour garantir que ces exigences soient respectées. Elle doit être appelée à la place de la commande intégrée de CMake add_library() lors de la définition d’une cible de plugin Qt.
Par défaut, le plugin sera créé sous forme de bibliothèque « STATIC » si Qt a été compilé de manière statique, ou sous forme de bibliothèque « MODULE » dans le cas contraire. Vous pouvez remplacer ce comportement par défaut en spécifiant explicitement l’option « STATIC » ou « SHARED ».
Toute valeur fournie pour ` sources ` sera transmise à l’appel interne à ` add_library()`.
Remarque : les pluginsnon statiques sont destinés à être chargés dynamiquement lors de l’exécution, et non liés lors de la compilation. CMake distingue ces deux scénarios en proposant le type de bibliothèque « MODULE » pour les bibliothèques chargées dynamiquement, et le type de bibliothèque « SHARED » pour celles pouvant être liées directement. Cette distinction est importante pour certaines chaînes d’outils (notamment Visual Studio), en raison de la manière dont les exportations de symboles sont gérées. Il peut s’avérer impossible de lier des bibliothèques de type « MODULE », et la génération d’une bibliothèque de type « SHARED » sans symboles exportés peut entraîner des erreurs lors de la compilation. Si l’option « SHARED » est transmise à « qt_add_plugin() », cela créera donc une bibliothèque de type « MODULE » plutôt qu’une bibliothèque de type « SHARED ».
Chaque plugin Qt possède un nom de classe. Par défaut, celui-ci est identique à l’ target, mais il peut être redéfini à l’aide de l’option CLASS_NAME. Le nom de classe correspond au nom de la classe C++ qui déclare les métadonnées du plugin. Pour les plugins statiques, il s’agit également du nom transmis à ` Q_IMPORT_PLUGIN`, qui importe le plugin dans une application et garantit sa disponibilité au moment de l’exécution.
Si le plugin est compilé de manière statique, ` qt_add_plugin() ` peut définir des cibles internes supplémentaires. Celles-ci facilitent l’importation automatique du plugin pour tout exécutable ou toute bibliothèque partagée qui se lie au plugin. Si le projet installe le plugin et a l’intention de le rendre disponible pour que d’autres projets puissent s’y lier, il doit également installer ces cibles internes. Les noms de ces cibles peuvent être obtenus en spécifiant l’option ` OUTPUT_TARGETS `, suivie du nom d’une variable dans laquelle la liste des cibles doit être renvoyée.
Finalisation
Une fois une cible créée, des étapes de traitement ou de finalisation supplémentaires peuvent s’avérer nécessaires. Le traitement de finalisation est mis en œuvre par la commande `qt_finalize_target() `.
Pour plus de détails et pour connaître la signification de l’option « MANUAL_FINALIZATION », consultez la documentation relative à la finalisation de qt_add_library.
Voir également qt_finalize_target() et qt_add_executable().
© 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.