qt_add_resources
Kompiliert binäre Ressourcen in den Quellcode.
Der Befehl ist in der Komponente Core
des Pakets Qt6
definiert, die wie folgt geladen werden kann:
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 ...])
Variablenbasierte Variante:
qt_add_resources(<VAR> file1.qrc [file2.qrc ...] [OPTIONS ...])
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_resources()
. Er unterstützt die gleichen Argumente wie dieser Befehl.
Beschreibung
Um Ressourcen hinzuzufügen, können Sie entweder ein Ziel oder einen Variablennamen als erstes Argument des Befehls übergeben.
Wenn Sie ein Ziel als erstes Argument übergeben, erstellt die Funktion eine Ressource mit dem Namen RESOURCE_NAME
, die die angegebene FILES
enthält. Die Ressource wird automatisch mit TARGET
verknüpft.
Bei Übergabe eines Variablennamens als erstes Argument erstellt qt_add_resources
Quellcode aus Qt-Ressourcendateien unter Verwendung des Resource Compiler (rcc). Die Pfade zu den erzeugten Quelldateien werden zu <VAR>
hinzugefügt.
Siehe Das Qt-Ressourcensystem für eine allgemeine Beschreibung der Qt-Ressourcen.
Die Argumente der zielbasierten Variante
PREFIX
gibt einen Pfadpräfix an, unter dem alle Dateien dieser Ressource von C++-Code aus zugänglich sind. Dies entspricht dem XML-Attribut prefix
des Dateiformats .qrc
. Wenn PREFIX
nicht angegeben wird, wird die Zieleigenschaft QT_RESOURCE_PREFIX verwendet. Seit Qt 6.5 ist PREFIX
optional. Wenn sie weggelassen und nicht durch QT_RESOURCE_PREFIX
angegeben wird, wird "/"
als Standard-Pfadpräfix verwendet.
LANG
spezifiziert das Gebietsschema dieser Ressource. Dies entspricht dem XML-Attribut lang
des Dateiformats .qrc
.
BASE
ist ein Pfadpräfix, das den Wurzelpunkt des Alias der Datei angibt. Wenn zum Beispiel BASE
"assets"
und FILES
"assets/images/logo.png"
ist, lautet der Alias dieser Datei "images/logo.png"
.
Die Alias-Einstellungen für Dateien müssen über die Eigenschaft QT_RESOURCE_ALIAS
source file festgelegt werden.
BIG_RESOURCES
kann angegeben werden, um die Unterstützung für große Ressourcen zu aktivieren. Dies erzeugt direkt Objektdateien (.o
, .obj
) anstelle von C++-Quellcode. Dies ermöglicht die Einbettung größerer Ressourcen, ohne dass die generierten C++-Quellen kompiliert werden müssen, was zu zeitaufwändig und speicherintensiv sein kann.
Beachten Sie, dass BIG_RESOURCES
aufgrund von Einschränkungen des Xcode-Projektgenerators von CMake nicht mit iOS kompatibel ist. Siehe QTBUG-103497 für Details. Außerdem funktioniert BIG_RESOURCES
erst ab CMake 3.17 zuverlässig.
Wenn Sie diesen Befehl mit statischen Bibliotheken verwenden, werden ein oder mehrere spezielle Targets erzeugt. Wenn Sie eine zusätzliche Verarbeitung dieser Ziele durchführen möchten, übergeben Sie dem Parameter OUTPUT_TARGETS
einen Variablennamen. Die Funktion qt_add_resources
speichert die Namen der speziellen Ziele in der angegebenen Variable.
Wenn DISCARD_FILE_CONTENTS
angegeben ist, werden die Ressourcendateien dem Ressourcensystem hinzugefügt, ohne dass ihr tatsächlicher Inhalt eingebettet wird. Stattdessen werden diese Dateien als leere Platzhalter innerhalb der generierten Ressource gespeichert.
Argumente der variablenbasierten Variante
Bei der variablenbasierten Variante übergeben Sie eine oder mehrere .qrc
Dateien als Argumente. Die Funktion generiert Quellcode aus diesen Qt-Ressourcendateien und fügt die Pfade zu den generierten Quelldateien in die angegebene Variable ein.
Argumente der beiden Varianten
Sie können zusätzliche OPTIONS
angeben, die zu den Aufrufen von rcc
hinzugefügt werden sollen. Mögliche Optionen finden Sie in der rcc-Dokumentation.
Beispiele
Ziel-Variante, mit sofortigen Ressourcen:
qt_add_executable(myapp main.cpp) qt_add_resources(myapp "images" PREFIX "/images" FILES image1.png image2.png)
Variable Variante, unter Verwendung einer .qrc-Datei:
set(sources main.cpp) qt_add_resources(sources example.qrc) qt_add_executable(myapp ${sources})
Vorbehalte
Wenn Sie mehrere Ressourcen hinzufügen, muss RESOURCE_NAME
für alle Ressourcen, die mit dem endgültigen Ziel verbunden sind, eindeutig sein.
Dies betrifft insbesondere statische Builds. Dort führt der gleiche Ressourcenname in verschiedenen statischen Bibliotheken zu Konflikten im konsumierenden Ziel.
Im Gegensatz zu qmake's RESOURCES
versucht qt_add_resources
nicht, irgendwelche QML- oder JavaScript-Dateien mit qmlcachegen zu kompilieren. Verwenden Sie hierfür qt_add_qml_module.
Siehe auch qt_add_big_resources().
© 2025 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.