Sur cette page

qt_add_resources

Compile les ressources binaires en code source.

La commande est définie dans le composant « Core » du paquet « 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 une variable :

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

Si les commandes sans version sont désactivées, utilisez plutôt ` qt6_add_resources() `. Elle prend en charge le même ensemble d’arguments que cette commande.

Description

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

Lorsque vous passez une cible comme premier argument, la fonction crée une ressource nommée RESOURCE_NAME, contenant l’ FILES spécifiée. La ressource est automatiquement liée à TARGET.

Lorsque vous passez un nom de variable comme premier argument, qt_add_resources génère du code source à partir des fichiers de ressources Qt à l’aide de l’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.

Les 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 depuis le 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 indiquant la racine de l’alias du fichier. Par exemple, si BASE est "assets" et que FILES est "assets/images/logo.png", alors 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 activer la prise en charge des ressources volumineuses. Cela génère directement des fichiers objets (.o, .obj) au lieu de code source C++. Cela permet d’intégrer des ressources plus volumineuses, sans avoir à compiler les sources C++ générées, ce qui peut s’avérer trop chronophage et gourmand en 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 sont générées. Si vous souhaitez effectuer un traitement supplémentaire sur ces cibles, transmettez 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 que leur contenu réel ne soit intégré. À la place, ces fichiers seront stockés sous forme d’espaces réservés vides au sein de la ressource générée.

Arguments de la variante basée sur des variables

Lorsque vous utilisez la variante basée sur des variables, vous transmettez un ou plusieurs fichiers « .qrc » en tant qu’arguments. La fonction génère du 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 s supplémentaires à ajouter aux appels à la fonction ` rcc `. Vous trouverez les options possibles dans la documentation de rcc.

Exemples

Variante « Target », 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})

Précautions

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

Cela concerne tout particulièrement les compilations statiques. Dans ce cas, un même nom de ressource présent dans différentes bibliothèques statiques entraîne un conflit au sein de la cible qui les utilise.

Contrairement à la fonction ` 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()` à cette fin.

Voir également 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.