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() を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

リソースを追加するには、コマンドの最初の引数にターゲットか変数名を渡します。

第一引数にターゲットを渡すと、この関数は指定されたFILES を含むRESOURCE_NAME という名前のリソースを作成します。このリソースは自動的にTARGET にリンクされます。

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

Qt リソースの一般的な説明は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++ソースをコンパイルすることなく、より大きなリソースを埋め込むことができます。

BIG_RESOURCES は、CMake の Xcode プロジェクトジェネレータの制限により、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 は最終ターゲットにリンクされるすべてのリソースで一意でなければなりません。

これは特に静的ビルドに影響します。そこでは、異なるスタティック・ライブラリの同じリソース名が、消費するターゲットで衝突します。

qmakeRESOURCES とは対照的に、qt_add_resourcesqmlcachegen を使って QML や JavaScript ファイルをコンパイルしようとしません。これにはqt_add_qml_module を使ってください。

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.