QTP0005
Permettre aux mots-clés de dépendance d'qt_add_qml_module() d'accepter des cibles CMake.
Cette politique a été introduite dans Qt 6.8. Elle permet de transmettre des cibles CMake à qt_add_qml_module() via les mots-clés DEPENDENCIES, IMPORTS, OPTIONAL_IMPORTS et DEFAULT_IMPORTS.
L'activation de cette politique signifie que les arguments transmis à ces mots-clés peuvent être préfixés par TARGET et sont alors traités comme un nom de cible CMake. L'URI du module QML et le chemin d'importation sont dérivés automatiquement de la cible.
Le comportement « OLD » de cette politique consiste à traiter la séquence de tokens « TARGET name » comme deux URI distincts : « TARGET » et « name ».
Le comportement « NEW » de cette politique est le suivant : « TARGET » est considéré comme un mot-clé. L’URI est extrait de la cible du module QML qui suit. Une erreur fatale se produit si le nom suivant « TARGET » ne fait pas référence à une cible existante, ou si cette cible ne correspond pas à un module QML.
Dans les deux cas ( NEW et OLD ), il est possible de spécifier une version de module en ajoutant une barre oblique suivie de la version. Voir Déclaration des dépendances de module pour plus de détails.
Contexte
Avant cette politique, les dépendances des modules QML devaient être déclarées par leur URI sous forme de chaîne de caractères, par exemple QtQuick ou com.example.mymodule. Cela impliquait que l'URI et, le cas échéant, le chemin d'importation de la dépendance devaient rester cohérents avec la cible CMake fournissant le module.
Avec le comportement de NEW, vous pouvez désormais faire référence à une dépendance par le nom de sa cible CMake. Le système de construction détermine alors automatiquement l’URI et le chemin d’importation corrects à partir de la cible. Cela évite d’avoir à spécifier manuellement des entrées IMPORT_PATH pour les dépendances situées en dehors du chemin d’importation QML par défaut, réduit les redondances et élimine une catégorie d’erreurs de copier-coller.
Exemple
Prenons l’exemple d’un module qui dépend d’un autre module défini dans le même projet. Avec le comportement « OLD » (ou avant Qt 6.8), l’URI doit être indiqué explicitement :
qt_add_qml_module(my_module
URI MyModule
VERSION 1.0
DEPENDENCIES
OtherModule
)Avec le comportement « NEW » (politique QTP0005 définie sur « NEW »), vous pouvez faire référence à la dépendance par son nom de cible 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 même syntaxe d’ TARGET est disponible pour IMPORTS, OPTIONAL_IMPORTS et DEFAULT_IMPORTS.
Lorsque la cible du module est un exécutable et que des dépendances de type ` TARGET ` sont utilisées, `qt_add_qml_module()` génère automatiquement un fichier ` qt.conf ` à côté de l’exécutable dans le répertoire de compilation. Ce fichier configure le chemin d’importation QML afin que les modules QML spécifiés comme dépendances ` TARGET ` puissent être trouvés lors de l’exécution. Utilisez ` NO_GENERATE_QTCONF ` pour désactiver ce comportement.
Comme indiqué ci-dessus, vous pouvez définir explicitement cette politique à l’aide de qt_policy(SET QTP0005 NEW) avant d’appeler qt_add_qml_module(). Vous pouvez également appeler qt_standard_project_setup() avec une version d’ REQUIRES 6.8 ou ultérieure pour activer toutes les politiques jusqu’à cette version.
Qt 6.8 émet un avertissement de dépréciation si vous utilisez « TARGET » comme jeton dans « DEPENDENCIES », « IMPORTS », « OPTIONAL_IMPORTS » ou « DEFAULT_IMPORTS » alors que la politique est définie sur « OLD ». Utilisez la commande « qt_policy() » pour supprimer cet avertissement en définissant explicitement la politique sur « OLD » ou « NEW ».
Remarque : le comportement « OLD » d’une politique est obsolète et pourrait être supprimé à l’avenir.
Voir également qt_policy(), qt_standard_project_setup(), qt_cmake_policies et 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.