En esta página

QTP0005

Las palabras clave de dependencia qt_add_qml_module aceptan objetivos CMake

Esta política se introdujo en Qt 6.8. Permite pasar objetivos CMake a qt_add_qml_module() mediante las palabras clave DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS, y DEFAULT_IMPORTS.

Activar esta política significa que los argumentos pasados a esas palabras clave pueden ir precedidos de TARGET, y entonces se tratan como un nombre de objetivo CMake. El URI del módulo QML y la ruta de importación se derivan automáticamente del objetivo.

El comportamiento OLD de esta política es que la secuencia de tokens TARGET name se trata como dos URI independientes, TARGET y name.

El comportamiento NEW de esta política es que TARGET es una palabra clave. El URI se extrae del objetivo del módulo QML que sigue. Es un error grave si el nombre que sigue a TARGET no hace referencia a un objetivo existente, o si ese objetivo no corresponde a un módulo QML.

Tanto en el comportamiento NEW como en OLD es posible especificar una versión de módulo añadiendo una barra oblicua y la versión. Para obtener más información, consulte Declarar dependencias de módulos.

Antecedentes

Antes de esta política, las dependencias de módulos QML debían declararse mediante su URI de cadena, por ejemplo QtQuick o com.example.mymodule. Esto significaba que el URI y, en caso necesario, la ruta de importación de la dependencia debían ser coherentes con el objetivo de CMake que proporciona el módulo.

Con el comportamiento NEW, puedes referirte a una dependencia por su nombre de objetivo CMake. El sistema de compilación determina automáticamente el URI y la ruta de importación correctos a partir del objetivo. Esto elimina la necesidad de especificar manualmente entradas IMPORT_PATH para dependencias fuera de la ruta de importación QML predeterminada, reduce la redundancia y elimina una clase de errores de copiar y pegar.

Ejemplo

Considere un módulo que depende de otro módulo definido en el mismo proyecto. Con el comportamiento OLD (o antes de Qt 6.8), el URI debe escribirse explícitamente:

qt_add_qml_module(my_module
    URI MyModule
    VERSION 1.0
    DEPENDENCIES
        OtherModule
)

Con el comportamiento NEW (política QTP0005 establecida en NEW), puede referirse a la dependencia por su nombre de destino CMake:

qt_policy(SET QTP0005 NEW)

qt_add_qml_module(other_module
    URI OtherModule
    VERSION 1.0
)

qt_add_qml_module(my_module
    URI MyModule
    VERSION 1.0
    DEPENDENCIES
        TARGET other_module
)

La misma sintaxis TARGET está disponible para IMPORTS, OPTIONAL_IMPORTS y DEFAULT_IMPORTS.

Como se muestra arriba, puede establecer la política explícitamente con qt_policy(SET QTP0005 NEW) antes de llamar a qt_add_qml_module(). Alternativamente, llame a qt_standard_project_setup() con una versión de REQUIRES de 6.8 o posterior para habilitar todas las políticas hasta esa versión.

Qt 6.8 emite una advertencia de desaprobación si se utiliza TARGET como token en DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS, o DEFAULT_IMPORTS mientras la política está establecida en OLD. Utilice el comando qt_policy para suprimir la advertencia estableciendo explícitamente la política en OLD o NEW.

Nota: el comportamiento OLD de una política está obsoleto y es posible que se elimine en el futuro.

Ver también qt_policy, qt_standard_project_setup(), qt_cmake_policies, y qt_add_qml_module.

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