このページでは

qt_add_resources

バイナリリソースをソースコードにコンパイルします。

このコマンドは、Qt6 パッケージのCore コンポーネントで定義されており、次のように読み込むことができます:

find_package(Qt6 REQUIRED COMPONENTS Core)

概要

qt_add_resources(<TARGET> <RESOURCE_NAME>
                  [PREFIX <PATH>]
                  [LANG <LANGUAGE>]
                  [BASE <PATH>]
                  [BIG_RESOURCES]
                  [DISCARD_FILE_CONTENTS]
                  [OUTPUT_TARGETS <VARIABLE_NAME>]
                  [FILES ...] [OPTIONS ...])

変数ベースのバリエーション:

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

バージョン指定のないコマンドが無効になっている場合は、代わりにqt6_add_resources() を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

リソースを追加するには、コマンドの最初の引数としてターゲットまたは変数名のいずれかを指定します。

最初の引数としてターゲットを指定した場合、この関数はRESOURCE_NAME という名前のリソースを作成し、そこに指定されたFILES を含めます。このリソースは自動的にTARGET にリンクされます。

最初の引数として変数名を渡すと、qt_add_resources はResource Compiler (rcc) を使用して Qt リソースファイルからソースコードを生成します。生成されたソースファイルへのパスは<VAR> に追加されます。

Qtリソースに関する一般的な説明については、『The Qt Resource System』を参照してください。

ターゲットベースのバリアントの引数

PREFIX は、C++ コードからこのリソースのすべてのファイルにアクセスできるパスプレフィックスを指定します。これは、.qrc ファイル形式の XML 属性prefix に対応します。PREFIX が指定されていない場合、ターゲットプロパティQT_RESOURCE_PREFIXが使用されます。Qt 6.5以降、PREFIX はオプションです。これが省略され、かつQT_RESOURCE_PREFIX によっても指定されていない場合、"/" がデフォルトのパスプレフィックスとして使用されます。

LANG このリソースのロケールを指定します。これは、.qrc ファイル形式のXML属性lang に対応します。

BASE は、ファイルのエイリアスのルートポイントを表すパスプレフィックスです。たとえば、BASE が"assets" で、FILES が"assets/images/logo.png" である場合、そのファイルのエイリアスは"images/logo.png" となります。

ファイルのエイリアス設定は、QT_RESOURCE_ALIAS ソースファイルのプロパティを介して設定する必要があります。

BIG_RESOURCES を指定することで、大きなリソースのサポートを有効にできます。これにより、C++ソースコードの代わりにオブジェクトファイル(.o 、.obj )が直接生成されます。これにより、生成されたC++ソースをコンパイルする必要がなく、より大きなリソースを埋め込むことが可能になります。C++ソースのコンパイルは、時間がかかり、メモリを大量に消費する可能性があります。

なお、CMakeのXcodeプロジェクトジェネレータの制限により、BIG_RESOURCES はiOSと互換性がありません。詳細についてはQTBUG-103497を参照してください。また、BIG_RESOURCES はCMake 3.17以降でのみ確実に動作します。

静的ライブラリでこのコマンドを使用する場合、1つ以上の特別なターゲットが生成されます。これらのターゲットに対して追加の処理を行いたい場合は、OUTPUT_TARGETS パラメータに変数名を渡してください。qt_add_resources 関数は、指定された変数に特別なターゲットの名前を格納します。

DISCARD_FILE_CONTENTS が指定された場合、リソースファイルは実際のコンテンツを埋め込まずにリソースシステムに追加されます。代わりに、これらのファイルは生成されたリソース内に空のプレースホルダーとして格納されます。

変数ベースのバリエーションの引数

変数ベースのバリエーションを使用する場合、1つ以上の.qrc ファイルを引数として渡します。この関数は、これらのQtリソースファイルからソースコードを生成し、生成されたソースファイルへのパスを指定された変数に追加します。

両方のバリエーションの引数

rcc の呼び出しに追加すべきOPTIONS をさらに指定することができます。利用可能なオプションについては、rccのドキュメントを参照してください。

例

ターゲットバリアント(即時リソースを使用):

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

.qrcファイルを使用する変数バリアント:

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

注意点

複数のリソースを追加する場合、RESOURCE_NAME は、最終的なターゲットにリンクされるすべてのリソースにわたって一意である必要があります。

これは特に静的ビルドに影響します。静的ビルドでは、異なる静的ライブラリ内で同じリソース名を使用すると、それを消費するターゲット内で競合が発生します。

qmakeの RESOURCES とは対照的に、qt_add_resources はqmlcachegenを使用してQMLやJavaScriptファイルをコンパイルしようとはしません。この場合はqt_add_qml_module()を使用してください。

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.