En esta página

qt_add_qml_plugin

Define un plugin asociado a un módulo QML.

El comando se define en el componente Qml del paquete Qt6, que puede cargarse de este modo:

find_package(Qt6 REQUIRED COMPONENTS Qml)

Sinopsis

qt_add_qml_plugin(
    target
    [BACKING_TARGET backing_target]
    [STATIC | SHARED]
    [OUTPUT_DIRECTORY]
    [URI]
    [CLASS_NAME]
    [NO_GENERATE_PLUGIN_SOURCE]
    [NAMESPACE namespace]
)

Si los comandos sin versión están desactivados, utilice qt6_add_qml_plugin() en su lugar. Admite el mismo conjunto de argumentos que este comando.

Descripción

Este comando crea el plugin asociado a un módulo QML. Normalmente sería llamado internamente por qt_add_qml_module() para crear o actualizar el plugin asociado con su objetivo de respaldo. No debería llamar a esta función directamente a menos que tenga circunstancias especiales que requieran que cree el objetivo de una manera especial.

La documentación de qt_add_qml_module( ) describe diferentes patrones estructurales de cómo se pueden organizar los objetivos CMake asociados a un módulo QML. Tenga en cuenta que incluso si el módulo QML no tiene un objetivo de respaldo separado y toda la funcionalidad se implementa directamente en el complemento (no es la disposición recomendada), debe llamar a qt_add_qml_module() en lugar de a qt_add_qml_plugin().

Argumentos

target especifica el nombre del objetivo que se utilizará para el complemento QML. Si aún no existe, se creará.

BACKING_TARGET especifica el nombre del objetivo de respaldo al que está asociado el complemento. El objetivo de respaldo puede ser el mismo que el del complemento target, en cuyo caso sólo habrá un objetivo fusionado, pero esto no suele recomendarse (consulte qt_add_qml_module() para obtener más información). BACKING_TARGET debe proporcionarse siempre a menos que existan circunstancias especiales que requieran que el objetivo del complemento se cree antes que el objetivo de respaldo. Si no se proporciona BACKING_TARGET, se debe dar la opción URI.

Por defecto, el complemento se crea con un tipo compatible con el objetivo de respaldo. Si el objetivo de respaldo es una biblioteca estática, el complemento también se creará como una biblioteca estática. Si el objetivo de respaldo es una biblioteca compartida, el complemento se creará como una biblioteca de módulos. Si no se proporciona un objetivo de respaldo o el complemento no tiene un objetivo de respaldo independiente, el tipo de complemento se puede especificar con las palabras clave STATIC o SHARED. Si el tipo de complemento no está determinado por ninguna de las condiciones anteriores, se creará un complemento estático si Qt se construyó como bibliotecas estáticas, o un complemento de biblioteca de módulos en caso contrario.

OUTPUT_DIRECTORY especifica el directorio donde se creará la biblioteca del complemento. Debe ser siempre la misma ubicación que el archivo qmldir del módulo QML. Si no se indica OUTPUT_DIRECTORY, se obtendrá a partir de la información almacenada en BACKING_TARGET, si está disponible. Tenga en cuenta que podría ser diferente del directorio de la biblioteca propia del objetivo de respaldo. Si no se puede obtener un directorio de salida del objetivo de respaldo, por defecto se utiliza CMAKE_CURRENT_BINARY_DIR.

URI declara el identificador del módulo QML al que está asociado este complemento. El identificador del módulo es el identificador (notación URI punteada) del módulo QML. Si no se proporciona URI, debe proporcionarse un BACKING_TARGET y el objetivo de respaldo debe tener su URI registrado en él (normalmente mediante una llamada anterior a qt_add_qml_module()).

Cada plugin debe tener una clase C++ que registre el módulo con el motor QML. Por defecto, qt_add_qml_plugin() genera automáticamente las fuentes de esta clase C++ y las añade a la lista de fuentes de target. La clase plugin generada satisface los requisitos de que el plugin sea opcional (véase Definición del módulo Archivos qmldir). El nombre de la clase se determina como sigue:

  • Si se ha dado CLASS_NAME, se utilizará. Debe coincidir con el nombre utilizado en el archivo qmldir del módulo QML.
  • Si no se ha indicado CLASS_NAME, pero sí BACKING_TARGET, el nombre de la clase C++ se tomará de los detalles registrados en ese objetivo de respaldo. Estos detalles se registran normalmente mediante una llamada anterior a qt_add_qml_module(), y coincidirán con el nombre utilizado en el archivo qmldir generado. Esta es la forma recomendada de proporcionar el nombre de la clase en la mayoría de los escenarios.
  • Si el nombre de la clase aún no se puede determinar, se establece en el URI del módulo con puntos sustituidos por guiones bajos, y Plugin añadido.

Si se proporciona un espacio de nombres con la palabra clave NAMESPACE, el código del complemento se generará en un espacio de nombres C++ con este nombre.

Algunos plugins pueden requerir que la clase del plugin se escriba manualmente. Por ejemplo, el plugin puede necesitar realizar una inicialización adicional o registrar cosas no implementadas por la clase plugin por defecto. En tales casos, se puede dar la opción NO_GENERATE_PLUGIN_SOURCE. El usuario es entonces responsable de escribir su propia clase plugin en C++ y añadirla a target. Tenga en cuenta que si necesita escribir su propia clase plugin, es muy poco probable que el plugin pueda ser opcional. Esto a su vez significa que la palabra clave NO_PLUGIN_OPTIONAL debe incluirse en la llamada a qt_add_qml_module() al definir el módulo QML, o de lo contrario el archivo qmldir generado será incorrecto. Asegúrese de que su clase de complemento utiliza el mismo nombre de clase que el determinado por la lógica anterior.

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