qmake 3.1(Qt 5.14.0使用)用户手册6——平台说明

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

macOS,iOS,tvOS和watchOS

这些平台特有的功能包括支持创建通用二进制文件,框架和捆绑软件。

源和二进制包

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

每个软件包的用户可以通过使用-spec选项调用qmake来覆盖此配置(有关更多信息,请参见运行qmake)。例如,要使用二进制包中的qmake在项目目录中创建Makefile,请调用以下命令:

 qmake -spec macx-g++

使用框架

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

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

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

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

 LIBS + = -framework TheFramework

创建框架

可以配置任何给定的库项目,以便将生成的库文件放置在框架中,以备部署。为此,将项目设置为使用lib模板,然后将lib_bundle选项添加到CONFIG变量中:

  模板 = lib
  配置 += 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变量获得的。

扫描二维码关注公众号,回复: 8837299 查看本文章

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

创建和移动Xcode项目

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

  qmake -spec macx-xcode project.pro

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

同时支持两个构建目标

目前,实现此功能尚不可行,因为Active Build Configurations的Xcode概念与qmake的构建目标概念不同。

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

当前无法从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。

通过设置系统变量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文件的生成。在这种情况下,qmake不会对给定的.rc文件或.res或.o文件做进一步的更改。与.rc文件生成有关的变量无效。

创建Visual Studio项目文件

本节介绍如何将现有的qmake项目导入Visual Studio。 qmake可以获取项目文件并创建一个Visual Studio项目,其中包含开发环境所需的所有必要信息。这是通过将qmake项目模板设置为vcapp(对于应用程序项目)或vclib(对于库项目)来实现的。
也可以使用命令行选项进行设置,例如:

  qmake -tp vc

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

  qmake -tp vc -r

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

注意:如果使用的是Visual Studio加载项,请选择Qt > Import from .pro file以导入.pro文件。

Visual Studio清单文件

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

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

  CONFIG -= embed_manifest_exe

同样,可以通过对CONFIG变量进行以下设置来删除DLL的清单嵌入:

  CONFIG -= embed_manifest_dll

Windows部署指南中对此进行了更详细的讨论。

发布了21 篇原创文章 · 获赞 0 · 访问量 1163

猜你喜欢

转载自blog.csdn.net/xuyouqiang1987/article/details/104079750