установить модуль qcharts в yocto sdk

Я пытаюсь кросс-компилировать пример диаграммы qt для < href="https://wiki.yoctoproject.org/wiki/Main_Page" rel="nofollow noreferrer">платформа yocto. Я делаю следующие шаги для компиляции моих программ 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? в состоянии скомпилировать пример? если да то как?

По некоторым причинам мне удалось выполнить кросс-компиляцию 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.


person PHA    schedule 07.02.2018    source источник


Ответы (1)


Как вы указали, вам нужен пакет 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, некоторые инструменты).

person Tomas Novotny    schedule 07.02.2018
comment
Спасибо. Я использовал оба метода, qcharts добавляется к моему целевому изображению, поэтому я могу выполнять двоичные файлы с помощью qchart. Но собственно проблема не решена, думаю qcharts все еще не добавлен в SDK. Я добавил IMAGE_INSTALL_append = " qtcharts" в файл bb, затем bitbake myimage -c populate_sdk, наконец, bitbake myimage, но до сих пор нет следов libQt5Chart.so и т. д. в /opt/myimage/../usr/lib. Последнее, что я сделал, это bitbake meta-toolchain-qt5 и запустил скрипт генерации для установки sdk в /opt/myimage/... Что мне здесь не хватает? кажется основной задачей добавить новую библиотеку/модуль в sdk. - person PHA; 09.02.2018
comment
Я только что заметил, что у меня есть два sdk в tmp/deploy/sdk: myimage-glibc-x86_64-core-image-myimage-cortexa9hf-neon-toolchain-2.1.2.sh и myimage-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-2.1.2.sh, поэтому мой вопрос, к какому рецепту я должен добавить qtcharts, как иметь qtcharts на meta-toolchain-qt5 sdk? потому что мне нужно скомпилировать мою программу с помощью qmake здесь /opt/myimage/2.1.2/sysroots/x86_64-pokysdk-linux/usr/bin/qt5/qmake - person PHA; 09.02.2018
comment
@PHA meta-toolchain-qt5 — это другой метод, и IMAGE_INSTALL в моем ответе здесь не поможет (я вижу ваш новый вопрос, постараюсь ответить в понедельник). Не могли бы вы проверить файлы xxx.target.manifest в каталоге tmp/deploy/sdk? Они должны содержать qtcharts. Если нет, то qtcharts определенно не являются частью нового SDK. Если да, то что-то не так с установкой вашего SDK. - person Tomas Novotny; 09.02.2018
comment
@PHA извините, я совсем забыл inherit populate_sdk_qt5 строку в рецепте изображения. Это требуется для SDK на основе Qt5. Я проверил наш Qt5 SDK и не вижу ничего другого, так что надеюсь, что это все... - person Tomas Novotny; 12.02.2018