我尝试交叉编译yocto平台的qt图表示例。我执行以下步骤来编译我的qt程序:
- source/opt/myimage/2.1.2/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
- qmake -o Makefile areachart.pro
- 做
但是当我像qmake -o Makefile areachart.pro
这样的将QT += charts
添加到任何项目运行时,我遇到了此错误:Project ERROR: Unknown module(s) in QT: charts
这是qmake -v
的输出:
QMake version 3.0
Using Qt version 5.7.0 in /opt/myimage/2.1.2/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib
我应该qtcharts
模块中添加我的yocto SDK以便能够编译示例吗? 如果是,如何?
出于某些原因,我能够使用qtcreator
从源代码交叉编译 Qt,并获取 qt 示例和 qtchart 库本身的二进制文件。我还在我的目标平台上运行 qt 示例,方法是手动将生成的libQtCharts.so
和其他文件放入目标/usr/lib/
和/usr/include/
中,并且能够在目标上绘制图表。
但是,我需要的是将图表包含在我的项目中并运行上述qmake
步骤。但我得到的是Project ERROR: Unknown module(s) in QT: charts
我试图将我从手动编译 qt 源代码中获得libQtCharts.so
放入/opt/myimage/2.1.2/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib
但仍然无法获取带有qmake -o Makefile areachart.pro
的 make 文件
正如您所指出的,您需要在SDK中qtcharts
软件包(准确地说,还需要qtcharts-dev
)。您还需要在目标上(即在映像中)qtcharts
包,否则当您在目标上执行二进制文件时,运行时库将丢失。
包的添加取决于构建 SDK 的方法。首选任务是populate_sdk
任务,因此我将在此处对其进行描述(它还会将包添加到您的目标中)。
构建 SDK 的命令是bitbake your_image -c populate_sdk
。将以下行添加到your_image.bb
配方中,以将qtcharts
包添加到映像(第 1 行)和 SDK 的其他 Qt5 内容(第 2 行)。
IMAGE_INSTALL += "qtcharts"
inherit populate_sdk_qt5
如果您不想直接编辑图像配方,也可以将这些行放入your_image.bbappend
。
该inherit populate_sdk_qt5
对于 Qt5 包是特定的(也是必需的),因为 SDK 需要其他东西(例如qt.conf
,一些工具)。