qt_add_resources
将二进制资源编译到源代码中。
该命令定义在 Qt6 包的 Core 组件中,可以通过以下方式加载
find_package(Qt6 REQUIRED COMPONENTS Core)
摘要
qt_add_resources(<VAR> file1.qrc [file2.qrc ...]
[OPTIONS ...])如果禁用了 无版本命令,则使用 qt6_add_resources()。它支持与此命令相同的参数集。
自 6.0 版本起
qt_add_resources(<TARGET> <RESOURCE_NAME>
[PREFIX <PATH>]
[LANG <LANGUAGE>]
[BASE <PATH>]
[BIG_RESOURCES]
[OUTPUT_TARGETS <VARIABLE_NAME>]
[FILES ...] [OPTIONS ...])如果禁用了 无版本命令,则使用 qt6_add_resources()。它支持与此命令相同的参数集。
描述
要添加资源,可以将变量名或目标作为命令的第一个参数传递。
当传递变量名作为第一个参数时,qt_add_resources 使用 资源编译器 (rcc) 从 Qt 资源文件中创建源代码。生成的源文件的路径添加到 <VAR>。
当传递目标作为第一个参数时,该函数会创建一个名为 RESOURCE_NAME 的资源,其中包含指定的 FILES。资源将自动链接到 TARGET。
有关 Qt 资源的一般描述,请参阅 Qt 资源系统。
基于目标的变体参数
PREFIX 指定一个路径前缀,所有资源的文件都可通过 C++ 代码从该前缀访问。这对应于 .qrc 文件格式的 XML 属性 prefix。如果没有指定 PREFIX,则使用目标属性 QT_RESOURCE_PREFIX。自 6.5 起可选。如果省略并且没有由 QT_RESOURCE_PREFIX 指定,则将使用默认路径前缀 "/"。
LANG 指定此资源的地区。这对应于 .qrc 文件格式的 XML 属性 lang。
BASE 是一个表示文件别名根点的路径前缀。例如,如果 BASE 是 "assets",而 FILES 是 "assets/images/logo.png",则该文件的别名为 "images/logo.png"。
需要通过 QT_RESOURCE_ALIAS 源文件属性设置文件的别名设置。
可以指定 BIG_RESOURCES 以启用对大资源的支持。这将直接生成对象文件(.o,.obj),而不是 C++ 源代码。这允许嵌入较大的资源,而无需编译生成的 C++ 源代码,这可能会非常耗时和占用大量内存。
请注意,由于 CMake 的 Xcode 项目生成器的限制,BIG_RESOURCES 与 iOS 不兼容。有关详细信息,请参阅 QTBUG-103497。此外,BIG_RESOURCES 从 CMake 3.17 开始才可靠工作。
当使用此命令与静态库一起时,将生成一个或多个特殊目标。如果您想对这些目标进行额外的处理,请向 OUTPUT_TARGETS 参数传递一个变量名。qt_add_resources 函数将特殊目标的名称存储在指定的变量中。
两种变体的参数
您可以为 rcc 调用添加额外的 OPTIONS。您可以在 rcc 文档 中找到可能的选择。
示例
变量版本,使用 .qrc 文件
set(SOURCES main.cpp)
qt_add_resources(SOURCES example.qrc)
qt_add_executable(myapp ${SOURCES})目标版本,使用即时资源
qt_add_executable(myapp main.cpp)
qt_add_resources(myapp "images"
PREFIX "/images"
FILES image1.png image2.png)注意事项
当添加多个资源时,RESOURCE_NAME 必须在所有链接到最终目标的资源中是唯一的。
这特别影响静态编译。在那里,不同的静态库中的相同资源名与消耗目标冲突。
另请参阅 qt_add_big_resources().
© 2024 Qt 公司有限公司。本文档中包含的贡献是各自所有者的版权。提供的文档是在 GNU 自由文档许可证版本 1.3 的条款下许可的,由自由软件基金会发布。Qt 及其相关标志是芬兰及/或在全世界其他地区 Qt 公司的商标。所有其他商标均为其各自所有者的财产。