지난 포스트에서는 욕토프로젝트를 이용하여 라즈베리파이3를 위한 Qt 프레임웍 + 임베디드 리눅스 시스템을 구축해보았다.
이번 포스트는 이 시스템을 위한 Qt 응용프로그램 SDK를 만들고 SDK를 설치하여 간단한 응용프로그램을 개발 및 실행 시켜본다.
여기서 설명하는 내용은 지난 포스트에서 설명했던 작업의 연장선이기 때문에 개발환경이 준비가 안되었다면 이전 글을 참고해야 한다.
SDK 빌드
Qt SDK를 만들기 위해서는 이전에 만든 레시피를 조금 수정해야한다. basic-qt5-image.bb파일을 편집기로 열고 상단에 아래의 내용을 추가한다.
이제 아래의 명령으로 SDK를 빌드할 수 있다.
$ bitbake basic-qt5-image -c populate_sdk
빌드가 성공적으로 완료되면 tmp/deploy/sdk 디렉토리에 SDK 설치 스크립트 파일이 만들어진다.
poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh
설치파일을 실행하고 기본위치(/opt)에 설치한다.
$ ./poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh
설치를 완료하고 다음과 같이 환경설정 스크립트를 실행한다.
$ source /opt/poky/2.6.1/environment-setup-cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi
QtCreator 설정
이제 같은 터미널에서 QtCreator를 실행하고 Tools - Options - Kits 메뉴를 선택.
먼저 컴파일러를 추가한다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
그다음 디버거를 추가한다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb
qmake는 아래의 위치에서 찾을 수 있다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/qmake
Kits탭에서 새롭게 추가한 컴파일러, 디버거, qmake를 지정하고 설정을 완료한다. 이제 추가한 Kit으로 빌드 할 수 있다.
예제 응용프로그램 작성
아래는 테스트를 위한 간단한 Qt 응용프로그램 예제이다.
시스템에 폰트가 없기 때문에 폰트를 준비하고 main.cpp에서는 이 폰트를 로드한다.
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QFontDatabase>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
int id = QFontDatabase::addApplicationFont(qApp->applicationDirPath()+"/NotoSansCJKkr-Regular.otf");
QString family = QFontDatabase::applicationFontFamilies(id).at(0);
QFont NotoSans(family);
app.setFont(NotoSans);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
main.qml
import QtQuick 2.11
import QtQuick.Window 2.11
Window {
id: window
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Text {
id: text
text: qsTr("Makersweb.net \n 환영합니다.")
anchors.centerIn: parent
font.pixelSize: 30
horizontalAlignment: Text.AlignHCenter
}
}
배포 및 실행
이제 빌드된 실행파일과 폰트를 라즈베리파이에 복사한다. (간단히 scp를 이용하였다.)
$ scp hello root@192.168.0.26:/home/root
다음과 같이 응용프로그램을 실행하면 전체 화면으로 실행된다.
root@raspberrypi3:~# ./hello -platform eglfs