我尝试为qt chart example交叉编译yocto platform。我按照以下步骤编译我的qt程序:
但是当我将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
模块my yocto SDK以便能够编译示例吗?如果有,怎么样?
由于某些原因,我能够使用qtcreator
交叉编译Qt from source并获取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
,但仍然无法使用qmake -o Makefile areachart.pro
答案 0 :(得分:1)
正如您所指出的,您需要在SDK中使用qtcharts
包(同样精确地使用qtcharts-dev
)。您还需要在目标上(即在图像中)使用qtcharts
包,否则当您在目标上执行二进制文件时,运行时库将会丢失。
添加包取决于构建SDK的方法。首选的是populate_sdk
任务,因此我将在此处对其进行描述(它还会将包添加到目标中)。
构建SDK的命令是bitbake your_image -c populate_sdk
。在your_image.bb
配方中添加以下行,将qtcharts
包添加到图像(第1行),将其他Qt5包添加到SDK(第2行)。
IMAGE_INSTALL += "qtcharts"
inherit populate_sdk_qt5
如果您不想直接编辑图像配方,也可以将这些行放入your_image.bbappend
。
inherit populate_sdk_qt5
对于Qt5软件包是特定的(并且是必需的),因为SDK需要其他内容(例如qt.conf
,某些工具)。