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
会使用Resource Compiler (rcc) 从 Qt XML 资源文件创建源代码。生成源文件的路径会添加到<VAR>
中。
如果将目标作为第一个参数传递,函数将创建一个资源,名称为RESOURCE_NAME
,其中包含指定的FILES
。该资源会自动链接到TARGET
中。
有关 Qt 资源的一般描述,请参阅 Qt 资源系统。
基于目标的变量的参数
PREFIX
指定一个路径前缀,C++ 代码可在该路径前缀下访问该资源的所有文件。这与 文件格式的 XML 属性 相对应。如果未给出 ,则使用目标属性.qrc
prefix
PREFIX
QT_RESOURCE_PREFIX。自 6.5 版起, 是可选属性。如果省略该属性,且 未指定该属性,则将使用 作为默认路径前缀。PREFIX
QT_RESOURCE_PREFIX
"/"
LANG
指定了该资源的地域。这与 文件格式的 XML 属性 相对应。.qrc
lang
BASE
是表示文件别名根点的路径前缀。例如,如果 是 , 是 ,那么该文件的别名就是 。BASE
"assets"
FILES
"assets/images/logo.png"
"images/logo.png"
文件的别名设置需要通过QT_RESOURCE_ALIAS
源文件属性来设置。
BIG_RESOURCES
可以指定"...... "来启用对大型资源的支持。这将直接生成对象文件 ( , ) 而不是 C++ 源代码。这样就可以嵌入更大的资源,而无需编译生成的 C++ Resource Compiler,因为编译 C++ Resource Compiler 会耗费大量时间和内存。.o
.obj
请注意,由于 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()。
© 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.