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=1
。QT_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
禁用tests
和examples
选项。这确保了不会为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-qt5 | meta-qt6 | |
---|---|---|
inherit qmake5 | inherit qt6-qmake | 用于构建qmake项目 |
inherit cmake-qt5 | inherit qt6-cmake | 用于构建CMake项目 |
Qt 6现在使用CMake进行自身构建,但qmake仍然支持应用程序开发,因此您可以使用qmake来保留您的应用程序构建。
在特定的Qt许可证下可用。
了解更多信息。