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.