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 公司的商标。所有其他商标均为其各自所有者的财产。