qt_add_resources | Qt Core 6.4.3

- Qt 6.4
- Qt Core
- CMake Commands in Qt6 Core
- qt_add_resources
- Qt 6.4.3 Reference Documentation

# qt_add_resources

Compiles binary resources into source code.

The command is defined in the `Core` component of the `Qt6` package, which can be loaded like so:

     find_package(Qt6 REQUIRED COMPONENTS Core)

## Synopsis

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

If versionless commands are disabled, use `qt6_add_resources()` instead. It supports the same set of arguments as this command.

Since 6.0:

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

If versionless commands are disabled, use `qt6_add_resources()` instead. It supports the same set of arguments as this command.

## Description

To add resources, you can pass either a variable name or a target as the first argument of the command.

When passing a variable name as first argument, `qt_add_resources` creates source code from Qt resource files using the Resource Compiler (rcc). Paths to the generated source files are added to `<VAR>`.

When passing a target as first argument, the function creates a resource with the name `RESOURCE_NAME`, containing the specified `FILES`. The resource is automatically linked into `TARGET`.

For embedding bigger resources, see qt_add_big_resources.

See The Qt Resource System for a general description of Qt resources.

## Arguments of the target-based variant

`PREFIX` specifies a path prefix under which all files of this resource are accessible from C++ code. This corresponds to the XML attribute `prefix` of the `.qrc` file format. If `PREFIX` is not given, the target property QT_RESOURCE_PREFIX is used.

`LANG` specifies the locale of this resource. This corresponds to the XML attribute `lang` of the `.qrc` file format.

`BASE` is a path prefix that denotes the root point of the file's alias. For example, if `BASE` is `"assets"` and `FILES` is `"assets/images/logo.png"`, then the alias of that file is `"images/logo.png"`.

Alias settings for files need to be set via the `QT_RESOURCE_ALIAS` source file property.

When using this command with static libraries, one or more special targets will be generated. Should you wish to perform additional processing on these targets, pass a variable name to the `OUTPUT_TARGETS` parameter. The `qt_add_resources` function stores the names of the special targets in the specified variable.

## Arguments of both variants

You can set additional `OPTIONS` that should be added to the `rcc` calls. You can find possible options in the rcc documentation.

## Examples

Variable variant, using a .qrc file:

     set(SOURCES main.cpp)
     qt_add_resources(SOURCES example.qrc)
     add_executable(myapp ${SOURCES})

Target variant, using immediate resources:

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

## Caveats

When adding multiple resources, `RESOURCE_NAME` must be unique across all resources linked into the final target.

This especially affects static builds. There, the same resource name in different static libraries conflict in the consuming target.