Auf dieser Seite

qt_add_resources

Kompiliert Binärressourcen in Quellcode.

Der Befehl ist in der Komponente „ Core “ des Pakets „ Qt6 “ definiert, das wie folgt geladen werden kann:

find_package(Qt6 REQUIRED COMPONENTS Core)

Syntax

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() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende 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 in „ TARGET “ eingebunden.

Wird ein Variablenname als erstes Argument übergeben, erstellt „ qt_add_resources “ Quellcode aus Qt-Ressourcendateien mithilfe des „Resource Compiler “ (rcc). Die Pfade zu den generierten Quelldateien werden zu „ <VAR> “ hinzugefügt.

Eine allgemeine Beschreibung der Qt-Ressourcen finden Sie unter „Das Qt-Ressourcensystem “.

Argumente der zielbasierten Variante

PREFIX legt ein Pfadpräfix fest, unter dem alle Dateien dieser Ressource aus C++-Code zugänglich sind. Dies entspricht dem XML-Attribut „ prefix “ des Dateiformats „ .qrc “. Wird „ PREFIX “ nicht angegeben, wird die Ziel-Eigenschaft „QT_RESOURCE_PREFIX“ verwendet. Seit Qt 6.5 ist „ PREFIX “ optional. Wird es weggelassen und nicht durch „ QT_RESOURCE_PREFIX “ festgelegt, wird „ "/" “ als Standard-Pfadpräfix verwendet.

LANG Gibt die Locale dieser Ressource an. Dies entspricht dem XML-Attribut „ lang “ des Dateiformats „ .qrc “.

BASE ist ein Pfadpräfix, das den Stammpunkt des Alias der Datei angibt. Wenn beispielsweise „ BASE “ „ "assets" “ und „ FILES “ „ "assets/images/logo.png" “ lautet, lautet der Alias dieser Datei „ "images/logo.png" “.

Alias-Einstellungen für Dateien müssen über die Eigenschaft „ QT_RESOURCE_ALIAS “ der Quelldatei festgelegt werden.

BIG_RESOURCES kann angegeben werden, um die Unterstützung für große Ressourcen zu aktivieren. Dadurch werden direkt Objektdateien (.o, .obj) anstelle von C++-Quellcode generiert. Dies ermöglicht das Einbetten größerer Ressourcen, ohne dass generierte C++-Quelldateien kompiliert werden müssen, was zu zeitaufwendig und speicherintensiv sein kann.

Beachten Sie, dass „ BIG_RESOURCES “ aufgrund von Einschränkungen des Xcode-Projektgenerators von CMake nicht mit iOS kompatibel ist. Weitere Informationen finden Sie unter QTBUG-103497. Außerdem funktioniert „ BIG_RESOURCES “ erst ab CMake 3.17 zuverlässig.

Bei Verwendung dieses Befehls mit statischen Bibliotheken werden ein oder mehrere spezielle Ziele generiert. Sollten Sie zusätzliche Verarbeitungsschritte für diese Ziele durchführen wollen, übergeben Sie einen Variablennamen an den Parameter „ OUTPUT_TARGETS “. Die Funktion „ qt_add_resources “ speichert die Namen der speziellen Ziele in der angegebenen Variablen.

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 Verwendung der variablenbasierten Variante übergeben Sie eine oder mehrere „ .qrc “-Dateien als Argumente. Die Funktion generiert aus diesen Qt-Ressourcendateien Quellcode und fügt die Pfade zu den generierten Quelldateien der angegebenen Variablen hinzu.

Argumente beider Varianten

Sie können zusätzliche „ OPTIONS “ festlegen, die zu den „ rcc “-Aufrufen hinzugefügt werden sollen. Mögliche Optionen finden Sie in der rcc-Dokumentation.

Beispiele

Zielvariante unter Verwendung von unmittelbaren Ressourcen:

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

Variablvariante unter Verwendung einer .qrc-Datei:

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

Hinweise

Beim Hinzufügen mehrerer Ressourcen muss der „ RESOURCE_NAME “ für alle Ressourcen, die in das endgültige Ziel eingebunden werden, eindeutig sein.

Dies betrifft insbesondere statische Builds. Dort führt derselbe Ressourcenname in verschiedenen statischen Bibliotheken zu Konflikten im aufrufenden Ziel.

Im Gegensatz zu qmakes` RESOURCES` versucht ` qt_add_resources ` nicht, QML- oder JavaScript-Dateien mit `qmlcachegen` zu kompilieren. Verwenden Sie hierfür `qt_add_qml_module() `.

Siehe auch 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.