0

我尝试为yocto 平台交叉编译qt 图表示例。我执行以下步骤来编译我的 qt 程序:

  • 源 /opt/myimage/2.1.2/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
  • qmake -o Makefile areachart.pro
  • 制作

但是当我添加QT += charts到任何项目运行 qmake时,qmake -o Makefile areachart.pro我遇到了这个错误:
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以便能够编译示例吗?如果是的话怎么办?

由于某些原因,我能够从源代码交叉编译Qtqtcreator并获取 qt 示例和 qtchart 库本身的二进制文件。我还在目标平台上运行 qt 示例,方法是将结果libQtCharts.so文件和其他文件手动放入目标中/usr/lib//usr/include/目标上,并且能够在目标上绘制图表。

但是,我需要在我的项目中包含图表并运行qmake上述步骤。但我得到的是Project ERROR: Unknown module(s) in QT: charts 我试图把libQtCharts.so我从手动编译 qt 源代码中得到的,/opt/myimage/2.1.2/sysroots/cortexa9hf-neon-poky-linux-gnueabi/usr/lib但仍然无法获得 make 文件qmake -o Makefile areachart.pro

4

1 回答 1

1

正如你所指出的,你需要在你的 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如果您不想直接编辑图像配方,也可以将这些行放入。

Qt5inherit populate_sdk_qt5包是特定的(并且是必需的),因为 SDK 需要其他东西(例如qt.conf,一些工具)。

于 2018-02-07T14:52:50.303 回答