qmake:平台说明

许多跨平台项目都可以通过基本的 qmake 配置功能来处理。但是,在某些平台上,利用特定于平台的功能有时很有用,甚至是必要的。qmake 可以通过特定变量访问这些功能,这些变量仅在相关平台上生效。

一、macOS、iOS、tvOS、watchOS

特定于这些平台的功能包括支持创建通用二进制文件、框架和包。

源代码和二进制包

源包中提供的 qmake 版本的配置与二进制包中提供的版本略有不同,因为它使用不同的功能规范。源包通常使用 macx-g++ 规范,二进制包通常配置为使用 macx-xcode 规范。

每个包的用户都可以通过使用 -spec 选项调用 qmake 来覆盖此配置。 例如,要使用二进制包中的 qmake 在项目目录中创建 Makefile,调用以下命令:

 qmake -spec macx-g++

使用框架

qmake 能够自动生成构建规则,用于链接 macOS 上标准框架目录中的框架,位于 /Library/Frameworks/。

需要为构建系统指定标准框架目录以外的目录,这是通过将链接器选项附加到 LIBS 变量来实现的,如下例所示:

 LIBS += -F/path/to/framework/directory/

框架本身是通过将 -framework 选项和框架名称附加到 LIBS 变量来链接的:

 LIBS += -framework TheFramework

创建框架

可以配置任何给定的库项目,以便将生成的库文件放置在框架中,准备部署。实现方式是设置项目以使用 lib 模板并将 lib_bundle 选项添加到 CONFIG 变量:

 TEMPLATE = lib
 CONFIG += lib_bundle

与库关联的数据是使用 QMAKE_BUNDLE_DATA 变量指定的。如下例所示:

 FRAMEWORK_HEADERS.version = Versions
 FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
 FRAMEWORK_HEADERS.path = Headers
 QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS

使用 FRAMEWORK_HEADERS 变量来指定特定框架所需的标头。将其附加到 QMAKE_BUNDLE_DATA 变量可确保将有关这些标头的信息添加到将与库包一起安装的资源集合中。

框架名称和版本由 QMAKE_FRAMEWORK_BUNDLE_NAME QMAKE_FRAMEWORK_VERSION 变量指定。默认情况下,用于这些变量的值是从 TARGET VERSION 变量中获得的。

创建和移动 Xcode 项目

macOS 上的开发人员可以利用 qmake 对 Xcode 项目文件的支持。通过运行 qmake 从现有的 qmake 项目文件生成一个 Xcode 项目。例如:

  qmake -spec macx-xcode project.pro

注意:如果稍后在磁盘上移动项目,则必须再次运行 qmake 以处理项目文件并创建新的 Xcode 项目文件。

二、Windows

此平台的特定功能包括支持 Windows 资源文件、创建 Visual Studio 项目文件以及在部署使用 Visual Studio 2005 或更高版本开发的 Qt 应用程序时处理清单文件。

添加 Windows 资源文件

应该使用 Qt 资源系统以独立于平台的方式访问链接的资源。但是 Windows 本身可以访问链接的 Windows 资源文件的一些标准元素。例如,在 Windows 资源管理器中,文件属性的版本选项卡由资源元素填充。此外,从这些元素中读取 EXE 的程序图标。因此,对于 Qt 创建的 Windows EXE 或 DLL 同时使用这两种技术是一种很好的做法:通过 Qt 资源系统链接与平台无关的资源,并通过 Windows 资源文件添加 Windows 特定资源。

通常,资源定义脚本(*.rc 文件)被编译为 Windows 资源文件。

  • Microsoft 工具链中使用 RC 工具生成一个 *.res 文件,该文件可以与 Microsoft 链接器链接到 EXE 或 DLL。
  • MinGW 工具链使用 windres 工具生成一个.o 文件,该文件可以通过MinGW 链接器链接到EXE 或DLL。

通过设置至少一个系统变量 VERSION RC_ICONS 来触发 qmake 自动生成适当填充的 *.rc 文件。生成的 *.rc 文件会自动编译和链接。

添加到 .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 文件。在这种情况下与 *.rc 文件生成相关的变量无效。

创建 Visual Studio 项目文件

qmake 能够获取一个项目文件并创建一个包含开发环境所需的所有必要信息的 Visual Studio 项目。这是通过将 qmake 项目模板设置为 vcapp(对于应用程序项目)或 vclib(对于库项目)来实现的。

也可以使用命令行选项设置,例如:

  qmake -tp vc

可以通过键入以下内容递归生成子目录中的 *.vcproj 文件和主目录中的 *.sln 文件:

  qmake -tp vc -r

注意:每次更新项目文件时,都需要运行 qmake 来生成更新后的 Visual Studio 项目。

Visual Studio 清单文件

部署使用 Visual Studio 2005 或更高版本构建的 Qt 应用程序时,请确保正确处理链接应用程序时创建的清单文件。对于生成 DLL 的项目,这是自动处理的。

可以通过对 CONFIG 变量的以下配置来删除应用程序可执行文件的清单嵌入:

  CONFIG -= embed_manifest_exe

此外,可以通过对 CONFIG 变量进行以下配置来删除 DLL 的清单嵌入:

  CONFIG -= embed_manifest_dll
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值