【问题标题】:install qcharts module to yocto sdk将 qcharts 模块安装到 yocto sdk
【发布时间】:2018-07-17 14:29:48
【问题描述】:

我尝试将qt chart example 交叉编译为yocto platform。我执行以下步骤来编译我的 qt 程序:

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

但是当我将QT += charts 添加到任何项目时,像qmake -o Makefile areachart.pro 这样运行qmake 我遇到了这个错误:
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 from source 并获取 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 文件

【问题讨论】:

    标签: c++ qt yocto bitbake qtcharts


    【解决方案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

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

    【讨论】:

    • 谢谢。我已经使用了这两种方法,将qcharts 添加到我的目标图像中,这样我就可以使用 qchart 执行二进制文件。但是实际问题并没有解决,我觉得qcharts还是没有加入SDK。我已将 IMAGE_INSTALL_append = " qtcharts" 添加到 bb 文件,然后将 bitbake myimage -c populate_sdk 添加到最后 bitbake myimage 但 /opt/myimage/../usr/lib 中仍然没有 libQt5Chart.so 等的痕迹。我做的最后一件事是bitbake meta-toolchain-qt5 并运行生成脚本以在 /opt/myimage/ 中安装 sdk... 我在这里缺少什么?将新库/模块添加到 sdk 看起来是一项基本任务。
    • 我刚刚注意到我在 tmp/deploy/sdk 中有两个 sdk:myimage-glibc-x86_64-core-image-myimage-cortexa9hf-neon-toolchain-2.1.2.shmyimage-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-2.1.2.sh 所以我的问题应该是添加 qtcharts 如何在 meta-toolchain-qt5 上添加 qtcharts sdk?因为我需要在这里用qmake编译我的程序/opt/myimage/2.1.2/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake
    • @PHA meta-toolchain-qt5 是一种不同的方法,我的回答中的 IMAGE_INSTALL 在这里没有帮助(我看到你的新问题,我会在周一尝试回答)。您能否检查tmp/deploy/sdk 目录中的xxx.target.manifest 文件?它们应该包含 qtcharts。如果不是,则 qtcharts 绝对不是新 SDK 的一部分。如果是,那么您的 SDK 安装有问题。
    • @PHA 抱歉,我完全忘记了图像配方中的inherit populate_sdk_qt5 行。基于 Qt5 的 SDK 需要它。我检查了我们的 Qt5 SDK 并没有看到任何其他东西,所以我希望这就是全部......
    猜你喜欢
    • 2020-07-01
    • 1970-01-01
    • 2018-02-07
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    相关资源
    最近更新 更多