Я пытаюсь кросс-компилировать Пример QT Chart для платформа Yocto. Я делаю следующие шаги для компиляции моих программ 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
модуль мой Yocto SDK быть в состоянии скомпилировать пример? если да как?
По некоторым причинам я смог кросс-компилировать Qt из источника с помощью qtcreator
и получите двоичные файлы для примеров 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
Как вы указали, вам нужно qtcharts
пакет (также с qtcharts-dev
чтобы быть точным) в вашем SDK. Вам также нужно 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
некоторые инструменты).
Других решений пока нет …