Qt编辑应用程序和库的属性
来源:互联网 发布:维修公司网络推广 编辑:程序博客网 时间:2024/05/16 06:24
qmake 可以随意地自动生成一个适当填充的 Windows 资源文件。本节主要讲解如何用 qmake 处理一个 Windows 资源文件,并将其链接到一个可执行应用程序(EXE)或动态链接库(DLL)。
简述
详细说明
生成 rc 文件
系统变量
windres
示例
更多参考
详细说明
一个链接的 Windows 资源文件包含许多元素,可以由其 EXE 或者 DLL 来访问。然而,Qt 资源系统应当以独立于平台的方式访问链接资源。但在链接的 Windows 资源文件中,有一些标准元素只能由 Windows 自身访问。例如,在 Windows 资源管理器中,文件属性的“详细信息”需要由资源元素填充。此外,EXE 的程序图标也需要从这些元素中读取。所以,对于一个由 Qt 创建的 Windows EXE 或 DLL 来说,要同时使用这两项技术,比较好的实践方法是:通过 Qt 资源系统链接独立于平台的资源,并通过一个 Windows 资源文件添加 Windows 的特定资源。
通常情况下,一个资源定义脚本(.rc 文件)被编译成一个 Windows 资源文件。在微软的工具链内部,RC 工具生成一个 .res 文件,该文件可以被微软链接器链接到一个 EXE 或 DLL;MinGW 工具链使用 windres 工具生成一个 .o 文件,该文件可以被 MinGW 链接器链接到一个 EXE 或 DLL。
生成 .rc 文件
通过设置系统变量VERSION
或RC_ICONS
(至少一个),qmake 会自动生成 .rc 文件。
以VERSION
为例,在 pro 中添加版本信息:
VERSION = 4.0.2.6661
执行 qmake,这时,会在 build 目录下生成一个名为 MyApp_resource.rc 的文件,生成的 .rc 文件会被自动编译和链接。
执行 Build(构建),会生成对应的 MyApp_resource.res 文件(已编译的资源脚本)。
可以看到,生成 .rc 文件的同时,会适当的填充元素,而这些元素由系统变量QMAKE_TARGET_COMPANY
、QMAKE_TARGET_DESCRIPTION
、QMAKE_TARGET_COPYRIGHT
、QMAKE_TARGET_PRODUCT
、RC_CODEPAGE
、RC_ICONS
、RC_LANG
、和VERSION
所决定。
如果这些元素不满足需要,qmake 还提供了两个系统变量:RC_FILE
和 RES_FILE
,他们直接指向一个外部创建的 .rc 或 .res 文件。通过设置其中的一个变量,指定的文件就可以被链接到 EXE 或 DLL。
注意:如果设置了RC_FILE
或RES_FILE
,qmake 对 .rc 文件的生成就失效了。这种情况下,qmake 不会对指定的 .rc 文件或 .res 或 .o 文件作进一步更改,有关 .rc 文件生成的变量不会有任何效果。
系统变量
QMAKE_TARGET_COMPANY
指定项目目标的公司名称
QMAKE_TARGET_DESCRIPTION
指定项目目标的描述信息
QMAKE_TARGET_COPYRIGHT
指定项目目标的版权信息
QMAKE_TARGET_PRODUCT
指定项目目标的产品名称
RC_CODEPAGE
指定应该被包含进一个 .rc 文件中的代码页
RC_LANG
指定应该被包含进一个 .rc 文件中的语言
注意:QMAKE_TARGET_COMPANY
、QMAKE_TARGET_DESCRIPTION
、QMAKE_TARGET_COPYRIGHT、QMAKE_TARGET_PRODUCT
、RC_CODEPAGE
、RC_LANG
均仅适用于 Windows, 而且只有在 VERSION
或RC_ICONS
变量被设置,并且RC_FILE
和RES_FILE
变量没有被设置的情况下生效。
RC_ICONS
仅适用于 Windows,指定应该被包含进一个 .rc 文件中的图标,只有在RC_FILE
和RES_FILE
没有被设置的情况下生效。
VERSION
指定程序的版本号,需要将 TEMPLATE 指定为 app 或 lib。
在 Windows 中,如果没有设置变量RC_FILE
和RES_FILE
,将会自动生成一个 .rc 文件,生成的文件包含FILEVERSION
和PRODUCTVERSION
,由主版本、次版本、补丁版本和构建号填充,每个数字必须在 0 - 65535 范围内。
例如:
win32:VERSION = 1.2.3.4 # major.minor.patch.buildelse:VERSION = 1.2.3 # major.minor.patch12
windres
windres 可用于操纵 Windows 资源,windres 并不总是建成二进制实用程序的一部分,因为它只用于 Windows 目标。
在windres 文档中,关于语言的描述如下:
–language valSpecify the default language to use when reading an rc file. val should be a hexadecimal language code. The low eight bits are the language, and the high eight bits are the sublanguage.
意思是:指定读取 rc 文件时使用的默认语言。val 应该是一个十六进制的语言代码,低 8 位是语言,高 8 位是子语言。
关于语言代码的描述可以参考:Language Identifier Constants and Strings
也就是说,如果要将程序的语言设置为“中文(简体)”,则只需要在 pro 中设置语言的“区域设置标识符”0x0004
即可:
RC_LANG = 0x00041
示例
如上所属,我们可以很轻易地将信息添加至 EXE 或 DLL 中:
只需要在 pro 中添加变量和对应的值:
# 版本信息VERSION = 4.0.2.666# 图标RC_ICONS = Images/MyApp.ico# 公司名称QMAKE_TARGET_COMPANY = "Digia"# 产品名称QMAKE_TARGET_PRODUCT = "Qt Creator"# 文件说明QMAKE_TARGET_DESCRIPTION = "Qt Creator based on Qt 5.7.0 (MSVC 2013, 32 bit)"# 版权信息QMAKE_TARGET_COPYRIGHT = "Copyright 2008-2016 The Qt Company Ltd. All rights reserved."# 中文(简体)RC_LANG = 0x00041234567891011121314151617181920
执行 qmake -> build,再次打开 .rc 文件,对应的元素信息已经被填充进去了。
建议:如果需要反复修改变量值,最好的方式:clear -> qmake -> build。切记不要忘记 qmake,因为只有执行了 qmake,才会重新生成 .rc 文件,将新修改的值重新写入。
- Qt编辑应用程序和库的属性
- QT应用程序中debug和release包含不同的库
- qt应用程序的交叉编译和移植
- 编辑和运行.NET应用程序
- 属性编辑的问题
- 属性编辑的问题
- qt打开和编辑文件
- 使用WinRT编辑图片文件的基本和高级属性
- Qt应用程序的图标
- Qt应用程序的图标
- Qt 应用程序的部署
- Qt 应用程序的部署
- Qt 应用程序的部署
- Qt应用程序的发布
- qt ip框的编辑
- 嵌入式系统中QT与文件系统和应用程序的关系
- QT中关闭应用程序和窗口的函数
- QT中关闭应用程序和窗口的函数
- 页面布局(2)
- spring定时器时间表达式
- 第十五周项目4
- 自己编写webservice_HelloWorld
- Dubbo-Admin管理平台和Zookeeper注册中心的搭建
- Qt编辑应用程序和库的属性
- PHP 中被忽略的性能优化利器:生成器
- xcode8回车缩进问题
- 构建器内部的多形性方法的行为
- 代理模式 和 策略模式 看似相似,有什么不同
- git修改本地ssh key
- tomcat报错org.apache.catalina.core.StandardContext.startInternal Error listenerStart
- Glide4使用说明
- WordPress是一个卓越的并安全的平台