配置Qt5 SDK
在Yocto里面配置Qt5 SDK(交叉编译工具链)的大致步骤如下:
- 下载meta-qt5并添加到 bblayers.conf.
- 在local.conf里面添加
DISTRO_FEATURES_append = " opengl wayland "
- 在your-custom-image.bb里面添加
inherit populate_sdk_qt5
- 为了解决后续使用SDK遇到的一个错误“…/sysroots/x86_64-phytecsdk-linux/usr/bin/qmlcachegen: not found”,需要创建nativesdk-packagegroup-qt5-toolchain-host.bbappend,然后在该文件添加:
RDEPENDS_${PN} += "nativesdk-qtdeclarative-tools"
- 使用如下命令生成交叉编译工具链:
bitbake your-custom-image -c populate_sdk
在rootfs里面配置Qt5
完成“配置Qt5 SDK”的前面两个步骤以后,只需要在your-custom-image.bb里面添加如下代码就可以基本完成rootfs里面Qt5的配置:
IMAGE_INSTALL_append = " \
qtbase \
qtbase-plugins \
qtbase-tools \
"
不过编译出来的qtbase基础功能和库可能并不符合我们的需求,参考qtbase食谱说明里面提到的“Dependencies”和“PACKAGECONFIG options”列表,我们可以在local.conf里面添加qtbase里面的一些可选功能来符合我们的特定需求,比如我遇到的一个项目需要添加如下配置选项:
PACKAGECONFIG_append_pn-qtbase = " linuxfb sql-sqlite gif ico fontconfig tslib widgets release qtquickcompiler"
考虑到目标板可能需要“qtquickcompiler”相应的完整功能包,需要在your-custom-image.bb里面添加:
IMAGE_INSTALL_append = " \
qtdeclarative \
"
如果Qt应用程序里面使用到了Qt Quick Controls,Qt Quick Controls 2以及Qt Graphical Effects等功能,类似于如下qml配置:
Source/qml/LoadingScreen.qml:2:import QtQuick.Controls 2.1
Source/qml/WindowManager.qml:3:import QtQuick.Controls 1.4
所有我们还需要在your-custom-image.bb里面添加程序包:
IMAGE_INSTALL_append = " \
qtquickcontrols-qmlplugins \
qtgraphicaleffects-qmlplugins \
qtquickcontrols2 \
"
不要忘了在your-custom-image.bb里面添加应用程序所需的字体支持:
IMAGE_INSTALL_append = "ttf-dejavu-sans ttf-dejavu-sans-mono ttf-dejavu-sans-condensed \
ttf-dejavu-serif ttf-dejavu-serif-condensed ttf-dejavu-common"
最后使用 bitbake your-custom-image
命令来生成相应的镜像包即可。