C

使用meta-qt6

meta-qt6 是一个OpenEmbedded和 Yocto 的元层,提供Qt模块的配方和支持使用Qt构建您的应用程序。本主题提供如何使用meta-qt6的常见指南。有关Yocto项目的详细信息,请参阅 Yocto项目文档

访问和贡献meta-qt6

meta-qt6层以MIT许可证提供,并在Qt Gerrit下,git镜像可在 code.qt.io 中找到。欢迎使用使用与Qt代码贡献类似的方式使用Qt代码审查进行贡献。Qt Gerrit非常适合代码审查,它还允许我们在提交合并前利用Qt CI系统进行构建验证。错误和其他问题可以通过使用组件 Yocto:meta-qt6层 在Qt错误跟踪器中报告和讨论。

使用meta-qt6

首先,您需要将meta-qt6层包含到您的Yocto构建环境中。通常,这意味着编辑 conf/bblayers.conf 文件,以包含meta-qt6的路径。然后,您可以包含任何Qt模块到您的镜像或工具链中。

配置Qt模块

meta-qt6为每个Qt模块提供配方。大多数配方支持 PACKAGECONFIG 选项,您可以使用它来修改每个Qt模块构建时启用的功能。

meta-qt6已经为每个具有PACKAGECONFIG选项的Qt模块启用了合理的默认功能集,但根据您的功能需求,您可以为每个Qt模块单独修改配置。

例如,如果您想启用QtBase中的所有示例,您需要创建一个qtbase_git.bbappend 文件,并添加以下 PACKAGECONFIG 选项

PACKAGECONFIG += "examples"

使用商业Qt

默认情况下,meta-qt6配方使用开源许可证配置Qt。拥有有效商业许可证的用户可以更改此设置,以便Qt通过启用商业许可证进行配置。这可以通过 conf/local.conf 或类似的全局配置文件中的QT_EDITION变量来完成

QT_EDITION = "commercial"

使用商业Qt插件

一些Qt附加模块是商业版专属,需要商业许可。这些模块不包括在默认的meta-toolchain-qt6和packagegroup配方中,除非设置了变量QT_COMMERCIAL_MODULES=1QT_EDITION也必须设置为commercial才能启用附加模块。

要访问源代码并构建这些附加模块,您必须按照设置Gerrit中的说明设置Qt Gerrit。

使用Qt LTS商业版

Qt提供了带有商业许可的长期支持(LTS)版本。

要在Yocto中构建Qt LTS商业版,首先需要完成以下步骤

  • 按照设置Gerrit中的说明设置Qt Gerrit。
  • yocto/meta-qt6 git仓库中检出正确的LTS标签或分支。LTS版本被标记为v6.x.y-lts

然后,继续像以前一样在Yocto中构建Qt。

使用https协议进行Qt代码检出

默认情况下,meta-qt6使用ssh获取LTS版本的Qt源代码。如果您无法使用ssh/git协议,请在构建环境中配置它以切换到使用https

QT_COMMERCIAL_GIT_PROTOCOL = "https"

请确保您已设置Gerrit,并且您的本地构建机器已设置为https访问。

构建Qt静态版本

默认情况下,meta-qt6将Qt构建为动态库集合。如果需要,您可以将Qt配置更改,以生成静态库。然后,您的应用程序将链接到静态库,并且您可以生成一个单二进制文件,无需额外的Qt库依赖。您可以通过将其添加到qtbase的PACKAGECONFIG中启用静态Qt构建。

PACKAGECONFIG += "static"

由于每个Qt应用程序都包含所有必需的Qt库,如果启用了Qt模块的测试和示例,构建可能会变得非常大。为此,您应该在Qt模块配方中禁用DISTRO_FEATURES中的ptest选项以及从PACKAGECONFIG禁用testsexamples选项。这确保了不会为Qt模块构建测试和示例。

有关静态构建应用程序的信息,请参阅链接到Qt静态构建

构建您自己的Qt应用程序

您可以通过在应用程序配方中继承正确的类使用meta-qt6来构建您自己的Qt应用程序。在设置常见的SRC_URI、DEPENDS和其他常见bitbake变量后,如果您有一个使用qmake的项目,则使用qt6-qmake

inherit qt6-qmake

或如果您有一个使用Qt的CMake项目,则使用qt6-cmake

inherit qt6-cmake

如果需要为qmake提供额外的参数,您可以使用EXTRA_QMAKEVARS_PRE变量

EXTRA_QMAKEVARS_PRE += "CONFIG+=extra-args"

对于CMake构建,您可以使用EXTRA_OECMAKE变量

EXTRA_OECMAKE += "-DFEATURE_EXTRA=ON"

工具链

meta-qt6层包含一个示例SDK配方(meta-toolchain-qt6),其中包含所有可用的Qt 6模块和构建Qt应用程序所需的工具。为了便于Qt Creator集成,我们已经包含了一个额外的CMake工具链文件(Qt6Toolchain.cmake),可以在不从工具链中源环境设置脚本的情况下使用。继续支持不源环境设置文件而使用工具链中的qmake,就像在meta-qt5中一样。

此外,meta-qt6层增加了对meta-mingw的支持,这允许您构建可以在Windows主机上本地运行的工具链。与原生Linux开发环境相比,Windows工具链仍然存在一些局限性,因为并非所有开发工具都可以目前为MinGW编译。

要创建自己的工具链配方,您可以使用populate_sdk_qt6_base.bbclass来包含所需的配置。

meta-qt6与meta-qt5

从meta-qt5切换到meta-qt6来构建Qt或您自己的应用程序应该相当简单。Qt模块的配方在两层中使用了相同的名称,并且从Qt 6.2开始,Qt 5的大部分模块都可在Qt6中找到。

应用配方中使用的两个主要bbclasses已经更改

meta-qt5meta-qt6
inherit qmake5inherit qt6-qmake用于构建qmake项目
inherit cmake-qt5inherit qt6-cmake用于构建CMake项目

Qt 6现在使用CMake进行自身构建,但qmake仍然支持应用程序开发,因此您可以使用qmake来保留您的应用程序构建。

在特定的Qt许可证下可用。
了解更多信息。