Compilateur de scripts QML
Le compilateur de scripts QML compile les fonctions et les expressions des fichiers QML et JavaScript en un code d'octets qui peut être interprété ou compilé juste à temps par le moteur QML.
En outre, il compile certaines fonctions et expressions des fichiers QML en code C++, dans les limites fixées par la nature de JavaScript. Il génère du code C++ pour les fonctions qui peuvent être analysées de manière exhaustive. L'organigramme suivant explique le processus de compilation.

Le compilateur de scripts QML est disponible en deux versions. La première est qmlcachegen, qui fait partie du compilateurQt Quick . L'autre est qmlsc, qui fait partie du module complémentaire commercial Qt Quick Compiler Extensions.
qmlcachegen
qmlcachegen utilise le système des Meta-Objects, génère des recherches et les stocke dans un endroit central, une unité de compilation. L'unité de compilation contient une représentation de la structure du document, une représentation compacte du code byte pour chaque fonction et expression, et du code natif pour les fonctions et les liaisons que le compilateur comprend parfaitement. Le code byte d'une unité de compilation peut être utilisé par le moteur QML pour éviter une nouvelle compilation et accélérer l'exécution.
qmlsc
qmlsc, quant à lui, étend la fonctionnalité de base de qmlcachegen en fournissant deux modes supplémentaires.
mode statique
En mode statique, qmlsc suppose qu'aucune propriété d'un type exposé à C++ ne peut être cachée par un type dérivé. Il élimine le mécanisme de vérification de l'ombre et permet de compiler davantage de code JavaScript en C++ et, en fin de compte, de générer un code plus rapide.
Pour activer le mode statique dans qmlsc, vous devez passer --static via QT_QMLCACHEGEN_ARGUMENTS à qt_add_qml_module.
qt_add_qml_module(someTarget
...
)
set_target_properties(someTarget PROPERTIES
QT_QMLCACHEGEN_ARGUMENTS "--static"
)Attention : le mode statique de qmlsc génère du code invalide si des propriétés sont ombrées dans le document QML.
mode direct
En mode direct, qmlsc suppose que tous les types C++ utilisés dans votre code QML sont disponibles et peuvent être inclus en tant qu'en-têtes C++ dans le code généré. Le code généré accède alors aux propriétés ou les modifie en appelant directement les getters, setters et fonctions invocables dans ces en-têtes, ce qui rend l'exécution encore plus rapide. Cela signifie que vous devez créer un lien vers les API privées de Qt dans CMake.
Attention : Les API privées de Qt changent souvent. Vous devrez recompiler Qt pour chaque nouvelle version.
Attention : Si un type n'est défini que dans un plugin ou n'a pas d'en-tête, vous ne pouvez pas l'utiliser en mode direct.
Pour activer le mode direct, vous devez prendre en compte les points suivants :
- vous devez passer
--direct-callsviaQT_QMLCACHEGEN_ARGUMENTSà qt_add_qml_module.qt_add_qml_module(someTarget ... ) set_target_properties(someTarget PROPERTIES QT_QMLCACHEGEN_ARGUMENTS "--direct-calls" ) - Lier tous les modules Qt privés pertinents au lieu de leurs homologues publics.
find_package(Qt6 COMPONENTS QmlPrivate QuickPrivate) qt_add_qml_module(someTarget ... ) target_link_libraries(someTarget PRIVATE Qt::QmlPrivate Qt::QuickPrivate ... ) - Ne définissez pas
PLUGIN_TARGETcomme étant la même cible que la bibliothèque d'appui.# direct mode will not function in this setup. qt_add_qml_module(someTarget PLUGIN_TARGET someTarget ... )
Limitations lors de la compilation de JavaScript en C
De nombreuses constructions JavaScript ne peuvent pas être représentées efficacement en C++. Le compilateur de scripts QML ne génère pas de code C++ pour les fonctions qui contiennent de telles constructions et ne génère qu'un code d'octets à interpréter ou à exécuter par le compilateur Just-in-time. Les expressions QML les plus courantes sont plutôt simples : recherche de valeurs sur des QObjects, arithmétique, constructions simples de type if/else ou boucle. Elles peuvent facilement être exprimées en C++, ce qui accélère l'exécution de votre application.
Obtenir des statistiques sur la compilation des fonctions et des bindings
Le QML Script Compiler enregistre des statistiques lors de la compilation de QML en C++. Celles-ci peuvent donner un aperçu de la compilation des fonctions et des liaisons et indiquer si elle a réussi ou quelle erreur l'a fait échouer. En plus de montrer ces résultats par liaison ou fonction, les statistiques sont également résumées par fichier, par module et au niveau du projet. Cela permet d'avoir un aperçu rapide de la qualité de la compilation d'un projet.
Pour afficher les statistiques, invoquez la cible cmake all_aotstats.
La collecte des statistiques de compilation est activée par défaut. Pour la désactiver, mettez la variable CMake QT_QML_GENERATE_AOTSTATS à OFF avant le premier appel à qt_add_qml_module.
Note : Ces statistiques ne sont disponibles que pour les modules enregistrés via l'API cmake 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.