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(<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.
Seit 6.0:
qt_add_resources(<TARGET> <RESOURCE_NAME> [PREFIX <PATH>] [LANG <LANGUAGE>] [BASE <PATH>] [BIG_RESOURCES] [OUTPUT_TARGETS <VARIABLE_NAME>] [FILES ...] [OPTIONS ...])
Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_resources()
. Es werden dieselben Argumente wie bei diesem Befehl unterstützt.
Beschreibung
Um Ressourcen hinzuzufügen, können Sie entweder einen Variablennamen oder ein Ziel als erstes Argument des Befehls übergeben.
Wenn Sie einen Variablennamen als erstes Argument übergeben, erzeugt qt_add_resources
Quellcode aus Qt-Ressourcendateien unter Verwendung von Resource Compiler (rcc). Die Pfade zu den erzeugten Quelldateien werden zu <VAR>
hinzugefügt.
Bei der Übergabe eines Ziels als erstes Argument erstellt die Funktion eine Ressource mit dem Namen RESOURCE_NAME
, die die angegebene FILES
enthält. Die Ressource wird automatisch in TARGET
verlinkt.
Siehe Das Qt-Ressourcensystem für eine allgemeine Beschreibung von Qt-Ressourcen.
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 6.5 ist PREFIX
optional. Wenn sie weggelassen und nicht durch QT_RESOURCE_PREFIX
angegeben wird, wird "/"
als Standard-Pfadpräfix verwendet.
LANG
gibt das Gebietsschema dieser Ressource an. 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 einen Variablennamen an den Parameter OUTPUT_TARGETS
. Die Funktion qt_add_resources
speichert die Namen der speziellen Ziele in der angegebenen Variable.
Argumente der beiden Varianten
Sie können zusätzliche OPTIONS
angeben, die zu den rcc
-Aufrufen hinzugefügt werden sollen. Mögliche Optionen finden Sie in der rcc-Dokumentation.
Beispiele
Variablen-Variante, unter Verwendung einer .qrc-Datei:
set(SOURCES main.cpp) qt_add_resources(SOURCES example.qrc) qt_add_executable(myapp ${SOURCES})
Zielvariante, die unmittelbare Ressourcen verwendet:
qt_add_executable(myapp main.cpp) qt_add_resources(myapp "images" PREFIX "/images" FILES image1.png image2.png)
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 Target.
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.