Sur cette page

qt_add_resources

Compile les ressources binaires en code source.

La commande est définie dans le composant Core du paquetage Qt6, qui peut être chargé comme suit :

find_package(Qt6 REQUIRED COMPONENTS Core)

Synopsis

qt_add_resources(<TARGET> <RESOURCE_NAME>
                  [PREFIX <PATH>]
                  [LANG <LANGUAGE>]
                  [BASE <PATH>]
                  [BIG_RESOURCES]
                  [DISCARD_FILE_CONTENTS]
                  [OUTPUT_TARGETS <VARIABLE_NAME>]
                  [FILES ...] [OPTIONS ...])

Variante basée sur des variables :

qt_add_resources(<VAR> file1.qrc [file2.qrc ...]
                  [OPTIONS ...])

Si les commandes sans version sont désactivées, utilisez qt6_add_resources() à la place. Il prend en charge le même ensemble d'arguments que cette commande.

Description de la commande

Pour ajouter des ressources, vous pouvez passer une cible ou un nom de variable comme premier argument de la commande.

Lorsqu'une cible est transmise comme premier argument, la fonction crée une ressource portant le nom RESOURCE_NAME, qui contient la ressource spécifiée FILES. La ressource est automatiquement liée à TARGET.

Lorsqu'un nom de variable est fourni comme premier argument, qt_add_resources crée le code source à partir des fichiers de ressources Qt XML à l'aide de Resource Compiler (rcc). Les chemins d'accès aux fichiers source générés sont ajoutés à <VAR>.

Voir Le système de ressources Qt pour une description générale des ressources Qt.

Arguments de la variante basée sur la cible

PREFIX spécifie un préfixe de chemin sous lequel tous les fichiers de cette ressource sont accessibles à partir du code C++. Cela correspond à l'attribut XML prefix du format de fichier .qrc. Si PREFIX n'est pas fourni, la propriété cible QT_RESOURCE_PREFIX est utilisée. Depuis Qt 6.5, PREFIX est facultatif. S'il est omis et n'est pas spécifié par QT_RESOURCE_PREFIX, "/" sera utilisé comme préfixe de chemin par défaut.

LANG spécifie la locale de cette ressource. Cela correspond à l'attribut XML lang du format de fichier .qrc.

BASE est un préfixe de chemin qui indique la racine de l'alias du fichier. Par exemple, si BASE est "assets" et FILES est "assets/images/logo.png", l'alias de ce fichier est "images/logo.png".

Les paramètres d'alias pour les fichiers doivent être définis via la propriété du fichier source QT_RESOURCE_ALIAS.

BIG_RESOURCES peut être spécifié pour permettre la prise en charge de ressources volumineuses. Cela génère directement des fichiers objets (.o, .obj) au lieu du code source C++. Cela permet d'intégrer des ressources plus importantes, sans avoir à compiler les sources C++ générées, ce qui peut prendre trop de temps et nécessiter beaucoup de mémoire.

Notez que BIG_RESOURCES n'est pas compatible avec iOS en raison des restrictions du générateur de projet Xcode de CMake. Voir QTBUG-103497 pour plus de détails. De plus, BIG_RESOURCES ne fonctionne de manière fiable qu'à partir de CMake 3.17.

Lorsque vous utilisez cette commande avec des bibliothèques statiques, une ou plusieurs cibles spéciales seront générées. Si vous souhaitez effectuer un traitement supplémentaire sur ces cibles, passez un nom de variable au paramètre OUTPUT_TARGETS. La fonction qt_add_resources stocke les noms des cibles spéciales dans la variable spécifiée.

Si DISCARD_FILE_CONTENTS est spécifié, les fichiers de ressources seront ajoutés au système de ressources sans intégrer leur contenu réel. Au lieu de cela, ces fichiers seront stockés en tant qu'espaces vides dans la ressource générée.

Arguments de la variante basée sur les variables

Lorsque vous utilisez la variante basée sur les variables, vous passez un ou plusieurs fichiers .qrc en tant qu'arguments. La fonction génère le code source à partir de ces fichiers de ressources Qt et ajoute les chemins d'accès aux fichiers source générés à la variable spécifiée.

Arguments des deux variantes

Vous pouvez définir des options supplémentaires OPTIONS qui doivent être ajoutées aux appels rcc. Vous trouverez les options possibles dans la documentation de rcc.

Exemples de variantes

Variante cible, utilisant des ressources immédiates :

qt_add_executable(myapp main.cpp)
qt_add_resources(myapp "images"
    PREFIX "/images"
    FILES image1.png image2.png)

Variante variable, utilisant un fichier .qrc :

set(sources main.cpp)
qt_add_resources(sources example.qrc)
qt_add_executable(myapp ${sources})

Avertissements

Lors de l'ajout de plusieurs ressources, RESOURCE_NAME doit être unique pour toutes les ressources liées à la cible finale.

Ceci affecte particulièrement les constructions statiques. Dans ce cas, le même nom de ressource dans différentes bibliothèques statiques entre en conflit dans la cible de consommation.

Contrairement à RESOURCES de qmake, qt_add_resources ne tente pas de compiler les fichiers QML ou JavaScript à l'aide de qmlcachegen. Utilisez qt_add_qml_module pour cela.

Voir aussi qt_add_big_resources().

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