Le cache disque QML
Vous devez définir vos modules QML en utilisant qt_add_qml_module, ce qui garantit que le compilateurQt Quick traite vos fichiers QML et JavaScript à l'avance. Cela garantit également des performances optimales au moment de l'exécution. Le compilateurQt Quick génère un code d'octets pour chaque fonction et chaque liaison. Ce code peut être utilisé par l'interprète QML et le compilateur Just-in-time (JIT) dans le moteur QML. En outre, le compilateurQt Quick génère du code natif pour les fonctions et les liaisons appropriées. Le code natif peut être exécuté directement, ce qui permet d'obtenir de meilleures performances que l'interprétation ou la compilation juste à temps du code byte. Le code byte et le code natif sont ensuite compilés dans votre binaire.
Lorsque vous utilisez qmake, vous pouvez spécifier CONFIG += qtquickcompiler pour donner un traitement similaire aux fichiers QML et JavaScript ajoutés en tant que ressources à votre projet. Qt Creator a un paramètre qui permet de passer CONFIG += qtquickcompiler à la ligne de commande de qmake. Par défaut, cette option est activée pour les versions release et profile. qmake ne peut pas transmettre autant d'informations au compilateurQt Quick que CMake. Par conséquent, la compilation contiendra moins de code natif.
Dans la mesure du possible, veillez à charger vos documents QML à partir du système de fichiers de ressources. Sinon, le moteur QML ne pourra pas trouver le code compilé à l'avance.
Si aucun code byte ou code natif ne peut être trouvé pour un document QML au moment de l'exécution, ou si le code est trouvé mais ne peut pas être utilisé, le moteur QML compile le document en une représentation de code byte à la volée. Le processus de compilation peut prendre du temps et le résultat ne contiendra que du code à octets. Les chargements ultérieurs du même document produiront le même code d'octets. Le moteur QML peut optimiser cette étape en mettant en cache le résultat de la compilation. Il stocke l'octet de code dans un fichier cache et charge ultérieurement le fichier cache au lieu de procéder à une nouvelle compilation lorsque le même document QML est redemandé. En général, les fichiers de cache sont stockés dans un sous-répertoire qmlcache du répertoire de cache du système, désigné par QStandardPaths::CacheLocation.
Des contrôles sont en place pour s'assurer que les fichiers de cache et tout code compilé à l'avance ne sont chargés que si toutes les conditions suivantes sont remplies :
- la version de Qt n'a pas changé
- Le code source du fichier original n'a pas changé.
- Le débogueur QML n'est pas en cours d'exécution
Seule la variable QML_FORCE_DISK_CACHE (voir ci-dessous) ne modifie que la condition relative au débogueur QML. Les autres variables d'environnement n'influencent pas ces conditions.
La variable d'environnement QML_DISK_CACHE est le principal moyen d'affiner le comportement concernant le code compilé à l'avance et la mise en cache. Cette variable prend une liste d'options séparées par des virgules, par exemple :
QML_DISK_CACHE=aot,qmlc-read
Les options disponibles sont les suivantes :
| Option | Description |
|---|---|
| aot-native | Charger les unités de compilation compilées à l'avance et autoriser l'exécution de tout code natif qu'elles contiennent. |
| aot-bytecode | Charge les unités de compilation compilées à l'avance et permet l'interprétation et la compilation juste à temps du code byte qu'elles contiennent. |
| aot | Abréviation de aot-native,aot-bytecode. |
| qmlc-read | Charge toutes les unités de compilation mises en cache pour les fichiers QML et JavaScript à partir du système de fichiers de l'hôte et permet l'interprétation et la compilation juste à temps du code d'octets qu'elles contiennent. |
| qmlc-write | Lors de la compilation à la volée d'un fichier QML ou JavaScript, créer un fichier cache par la suite. Le fichier cache peut être chargé lorsque le même document est demandé à nouveau. |
| qmlc | Abréviation de qmlc-read,qmlc-write. |
En outre, vous pouvez utiliser les variables d'environnement suivantes :
| Variable d'environnement | Variable d'environnement Description |
|---|---|
QML_DISABLE_DISK_CACHE | Désactive le cache disque et force la recompilation à partir des sources pour tous les fichiers QML et JavaScript. QML_DISABLE_DISK_CACHE remplace QML_DISK_CACHE. |
QML_FORCE_DISK_CACHE | Active le cache disque même lors du débogage de QML. Vous ne pouvez pas utiliser le débogueur JavaScript de cette manière. Il risque de ne pas s'arrêter aux points d'arrêt, par exemple. Vous pouvez néanmoins utiliser l'inspecteur QML pour explorer la hiérarchie des objets. QML_FORCE_DISK_CACHE remplace QML_DISABLE_DISK_CACHE et QML_DISK_CACHE. |
QML_DISK_CACHE_PATH | Spécifie un emplacement personnalisé où les fichiers de cache doivent être stockés au lieu d'utiliser l'emplacement par défaut. |
© 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.