平台说明

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

macOS、iOS、tvOS 和 watchOS

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

源代码和二进制软件包

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

每个软件包的用户可以通过使用带 -spec 选项的 qmake 来覆盖此配置(有关更多信息,请参阅运行 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_NAMEQMAKE_FRAMEWORK_VERSION变量指定框架名称和版本。默认情况下,这些变量使用的是TARGETVERSION变量的值。

有关应用程序和库部署的更多信息,请参阅Qt for macOS - Deployment

创建和移动Xcode项目

在 macOS 上,开发者可以从现有的 qmake 项目文件生成 Xcode 项目文件。例如

qmake -spec macx-xcode project.pro

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

同时支持两个构建目标

目前实现这一点还不可行,因为 Xcode 中 Active Build Configurations 的概念与 qmake 中构建目标的理念在概念上是不同的。

Xcode Active Build Configurations 设置用于修改 Xcode 配置、编译器标志和类似的构建选项。与 Visual Studio 不同,Xcode 不允许根据是否选择了调试或发布构建配置来选择特定的库文件。qmake 调试和发布设置控制哪些库文件链接到可执行文件。

目前无法从 qmake 生成的 Xcode 项目文件中设置 Xcode 配置设置。库在 Xcode 构建系统的 Frameworks & Libraries 阶段链接的方式。

此外,选定的 Active Build Configuration 存储在 .pbxuser 文件中,该文件由 Xcode 在第一次加载时生成,而不是由 qmake 创建。

Windows

该平台特有的功能包括对 Windows 资源文件(提供或自动生成)的支持、创建 Visual Studio 项目文件以及处理使用 Visual Studio 2005 或更高版本开发的 Qt 应用程序的清单文件。

添加 Windows 资源文件

本节描述了如何使用 qmake 处理 Windows 资源文件,以便将其链接到应用程序的可执行文件(EXE)或动态链接库(DLL)。qmake 可选择性地自动生成一个合适的 Windows 资源文件。

链接的 Windows 资源文件可能包含许多可以通过其 EXE 或 DLL访问的元素。但是,应使用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。

通过设置系统变量VERSIONRC_ICONS中的至少一个,qmake可以触发自动生成一个配置合理的.rc文件。生成的.rc文件将自动编译并链接。添加到.rc文件中的元素由系统变量QMAKE_TARGET_COMPANYQMAKE_TARGET_DESCRIPTIONQMAKE_TARGET_COPYRIGHTQMAKE_TARGET_PRODUCTQMAKE_TARGET_ORIGINAL_FILENAMEQMAKE_TARGET_INTERNALNAMEQMAKE_TARGET_COMMENTSQMAKE_TARGET_TRADEMARKSQMAKE_MANIFESTRC_CODEPAGERC_ICONSRC_LANG以及VERSION定义。

如果这些元素不足以满足要求,qmake还有两个系统变量RC_FILERES_FILE,可以直接指向外部创建的.rc或.res文件。设置这些变量之一,就可以将指定的文件链接到.EXE或.DLL。

注意:如果设置RC_FILERES_FILE,则qmake会阻止生成.rc文件。在这种情况下,qmake将不会对指定的.rc文件或.res或.o文件进行任何进一步更改;与.rc文件生成相关的变量将无效果。

创建Visual Studio项目文件

本节介绍了如何将现有的qmake项目导入Visual Studio。qmake可以通过将项目模板设置为vcapp(用于应用程序项目)或vclib(用于库项目),来从项目文件创建包含所需所有信息的发展环境项目文件。

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

qmake -tp vc

通过在子目录中键入,可以递归地生成.vcproj文件,在主目录中生成.sln文件

qmake -tp vc -r

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

注意:如果您正在使用Visual Studio插件,请选择Qt > 从.pro文件导入,以导入.pro文件。

Visual Studio Manifest文件

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

可以使用对CONFIG变量的以下分配移除应用程序可执行文件的映像嵌入

CONFIG -= embed_manifest_exe

此外,还可以通过以下分配将DLL的映像嵌入移除

CONFIG -= embed_manifest_dll

有关更多详细信息,请参阅Microsoft Windows部署指南

© 2024 Qt Company Ltd. 本文档中包含的贡献内容均为各自所有者的版权。本提供文档遵循由自由软件基金会发布的《GNU自由文档许可证》第1.3版本,链接请见 [GNU自由文档许可证](http://www.gnu.org/licenses/fdl.html)。Qt及其相关标志为芬兰的Qt Company Ltd.及世界其他国家的商标。所有其他商标均为其各自所有者的财产。