Raspberry Pi에 Qt 패키지를 설치한 후, 간단한 예제 코드를 작성하여 터미널에서 컴파일 하는 과정을 다루었습니다.
글작성 시점에서 5.11.3이 설치됩니다.
2016. 5. 29 - 최초작성
….
2018. 9. 19 - Raspberry Pi 3, Qt 5.7
2021. 7. 31 - Raspberry Pi 4, Qt 5.11.3
1. 저장소를 업데이트 한 후, Qt 패키지를 설치합니다.
$ sudo apt-get update
$ sudo apt-get install qt5-default qtbase5-dev qtdeclarative5-dev qt5-qmake qtcreator libqt5gui5 qtscript5-dev qtmultimedia5-dev libqt5multimedia5-plugins qtquickcontrols2-5-dev libqt5network5 cmake build-essential
2. 설치 완료 후, Qt 버전을 확인합니다.
pi@raspberrypi:~ $ qmake -version
QMake version 3.1
Using Qt version 5.11.3 in /usr/lib/arm-linux-gnueabihf
3. qtcreator를 사용하지 않고 터미널에서 간단한 qt 예제 코드를 컴파일하는 과정을 다룹니다.
3-1. 프로젝트 파일들을 저장할 디렉토리를 생성하고 이동합니다.
pi@raspberrypi:~ $ mkdir SimpleQtExample
pi@raspberrypi:~ $ cd SimpleQtExample
편집기로 새로운 cpp 파일을 열어서
pi@raspberrypi:~/SimpleQtExample $ nano simple.cpp
다음 코드를 복사하여 붙여넣기합니다. 윈도우를 하나 띄우고 타이틀바에 "Simple example"이라는 문자열을 출력하는 예제 코드입니다.
#include <QApplication> #include <QWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; window.resize(250, 150); window.setWindowTitle("Simple example"); window.show(); return app.exec(); } |
현재 프로젝트 디렉토리에는 소스코드만 있습니다.
pi@raspberrypi:~/SimpleQtExample $ ls
simple.cpp
3-2. qmake -project 명령을 사용하면 qt 프로젝트 파일을 생성해줍니다.
qt 프로젝트 파일의 정보를 가지고 Makefile을 만들게 됩니다.
pi@raspberrypi:~/SimpleQtExample $ qmake -project
프로젝트 파일은 확장자가 pro인 파일이 자동으로 생성됩니다.
pi@raspberrypi:~/SimpleQtExample $ ls
simple.cpp SimpleQtExample.pro
3-3. qt 프로젝트 파일이 생성될 때, qt 코드에서 사용중인 qt 모듈 이름이 자동으로 추가되지 않습니다.
qt 프로젝트 파일을 열어서 사용중인 qt 모듈 이름을 추가해줘야 합니다.
사용 중인 qt 모듈 이름을 찾는 방법입니다. 우선 locate 패키지를 설치해야 합니다
pi@raspberrypi:~/SimpleQtExample $ sudo apt-get install locate
예제 코드에서 인클루드하고 있는 QApplication과 Qwidget 찾아보면 두 개 모두 QtWidgets 디렉토리에 포함되어 있습니다.
사용하고 있는 모듈 이름은 디렉토리 이름에서 Qt를 빼고 소문자로 변환한 widgets가 됩니다.
pi@raspberrypi:~/SimpleQtExample $ sudo find / | grep QApplication
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QApplication
/usr/include/arm-linux-gnueabihf/qt5/QtGui/QApplicationStateChangeEvent
pi@raspberrypi:~/SimpleQtExample $ sudo find / | grep QWidget
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetItem
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetAction
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidget
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetData
/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetItemV2
/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetMapper
/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetList
/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetSet
다음과 같이 SimpleQtExample.pro 파일에 widgets를 추가해줍니다.
core와 gui는 디폴트로 추가되어 있으므로 적지 않아도 됩니다.
QT += widgets
TEMPLATE = app
TARGET = SimpleQtExample
INCLUDEPATH += .
3-4. qmake 명령으로 Makefile을 생성합니다.
Makefile은 다음 두 가지 과정을 자동화하기 위해 필요한 것들을 기술하고 있습니다.
- 컴파일러로 소스 코드 파일을 컴파일하여 오브젝트 파일을 생성
- 링커를 사용하여 오브젝트 파일과 라이브러리 파일을 결합하여 실행 파일을 생성
pi@raspberrypi:~/SimpleQtExample $ qmake
Makefile이 프로젝트 폴더에 생성됩니다.
pi@raspberrypi:~/SimpleQtExample $ ls
Makefile simple.cpp SimpleQtExample.pro
3-5. make 명령은 Makefile에 기술된대로 컴파일 및 링크를 실행합니다.
pi@raspberrypi:~/SimpleQtExample $ make
중간 결과물인 확장자 .o인 오브젝트 파일과 프로젝트 디렉토리와 동일한 이름을 갖는 실행파일이 생성되었습니다.
pi@raspberrypi:~/SimpleQtExample $ ls
Makefile simple.cpp simple.o SimpleQtExample SimpleQtExample.pro
이제 실행시켜 보면 작은 윈도우가 띄어지고 타이틀바에 "Simple example" 이라는 문자열이 출력됩니다.
pi@raspberrypi:~/SimpleQtExample $ ./SimpleQtExample
MobaXterm으로 SSH 접속시 실행 결과를 바로 볼 수 있습니다.
https://mobaxterm.mobatek.net/
QT 강좌 01 - Hello World
https://webnautes.tistory.com/1859
QT 강좌 02 - Simple GUI
https://webnautes.tistory.com/1860
QT 강좌 03 - Push Button
https://webnautes.tistory.com/1861
QT 강좌 04 - QLabel
https://webnautes.tistory.com/1862
QT 강좌 05 - QMenu
https://webnautes.tistory.com/1863
QT 강좌 06 - QToolBar
https://webnautes.tistory.com/1864
QT 강좌 07 - QVBoxLayout, QHBoxLayout
https://webnautes.tistory.com/1865
QT 강좌 08 - Button
https://webnautes.tistory.com/1866
QT 강좌 09 - QListWidget
https://webnautes.tistory.com/1867
QT 강좌 10 - QFormLayout
https://webnautes.tistory.com/1868
QT 강좌 11 - QGridLayout
https://webnautes.tistory.com/1869
QT 강좌 12 - QGridLayout 2
https://webnautes.tistory.com/1870
'Qt > Qt 개발환경' 카테고리의 다른 글
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" 에러 해결 방법 (0) | 2024.03.29 |
---|---|
Ubuntu 20.04에 QT 설치하기 (0) | 2023.10.05 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!