반응형

Hello World를 터미널에 출력하는 간단한 QT5 예제입니다. 

 

아래 사이트의 QT 강좌를 공부하며 정리 차원에서 작성하는 포스트입니다. 

https://www.bogotobogo.com/Qt/Qt5_TutorialHelloWorld.php



2021. 08. 07 - 최초작성



터미널에서 빌드 및 실행을 진행합니다. 편집기는 익숙한 것을 사용하세요. 



저는 Raspberry Pi 4에 Qt를 설치하고 MobaXterm으로 SSH 접속하여 vscode로 편집하며 터미널에서 빌드하여 사용해보려고 합니다. 



설치 방법은 아래 포스트를 참고하세요.



Raspberry Pi 4에 Qt5 설치

https://webnautes.tistory.com/1858 




1. 프로젝트 파일들을 저장할 디렉토리를 생성하고 이동합니다.

 

pi@raspberrypi:~ $ mkdir HelloWorldExample

 

pi@raspberrypi:~ $ cd HelloWorldExample



2. 현재 위치에서 vscode를 실행합니다. MobaXterm으로 Raspberry Pi 4에 SSH 접속한 경우에만 해당됩니다. 

익숙한 편집기를 사용해도 됩니다. 

 

pi@raspberrypi:~/HelloWorldExample $ code .



3. hello.cpp 파일을 생성하여 다음 코드를 복사하여 붙여넣기합니다. 

 

#include <QCoreApplication>
#include <QDebug>



int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
   
    qDebug() << "Hello World";

    return a.exec();
}



QCoreApplication 클래스는 콘솔 Qt 응용 프로그램에 대한 이벤트 루프를 제공합니다.

이 클래스는 non-GUI 응용 프로그램에서 이벤트 루프를 제공하는 데 사용됩니다.

Qt를 사용하는 non-GUI 응용 프로그램에는 하나의 QCoreApplication 객체가 있어야 합니다.

 

GUI 응용 프로그램의 경우 QApplication을 사용합니다.

 

a.exec()를 호출하면 이벤트 루프가 시작됩니다.





4. qmake -project 명령을 사용하면 qt 프로젝트 파일을 생성해줍니다.

프로젝트를 구성하는 파일의 정보를 가지고 확장자가 pro인 파일이 자동으로 생성합니다. 

 

pi@raspberrypi:~/HelloWorldExample $ qmake -project

 

pi@raspberrypi:~/HelloWorldExample $ ls

hello.cpp  HelloWorldExample.pro



5. 확장자가 pro인  qt 프로젝트 파일이 생성될 때, qt 코드에서 사용중인 qt 모듈 이름이 자동으로 추가되지 않습니다.  

일단 진행해보고 컴파일 에러가 나면 qt 프로젝트 파일을 열어서 사용중인 qt 모듈 이름을 추가해줘야 합니다.

 

보통 다음 한줄을 추가해주면 됩니다.  지금은 추가하지 않아도 됩니다. 

 

QT += widgets



6. qmake 명령으로 Makefile을 생성합니다.

Makefile은 다음 두 가지 과정을 자동화하기 위해 필요한 것들을 기술하고 있습니다.

  • 컴파일러로 소스 코드 파일을 컴파일하여 오브젝트 파일을 생성
  • 링커를 사용하여 오브젝트 파일과 라이브러리 파일을 결합하여 실행 파일을 생성

 

 

pi@raspberrypi:~/HelloWorldExample $ qmake

Info: creating stash file /home/pi/HelloWorldExample/.qmake.stash

 

pi@raspberrypi:~/HelloWorldExample $ ls

hello.cpp  HelloWorldExample.pro  Makefile



7. make 명령은  Makefile에 기술된대로 컴파일 및 링크를 실행합니다.

 

pi@raspberrypi:~/HelloWorldExample $ make

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/arm-linux-gnueabihf/qt5 -isystem /usr/include/arm-linux-gnueabihf/qt5/QtGui -isystem /usr/include/arm-linux-gnueabihf/qt5/QtCore -I. -I/usr/lib/arm-linux-gnueabihf/qt5/mkspecs/linux-g++ -o hello.o hello.cpp

g++ -Wl,-O1 -o HelloWorldExample hello.o   -lQt5Gui -lQt5Core -lGLESv2 -lpthread -latomic



중간 결과물인  확장자 .o인 오브젝트 파일과 프로젝트 디렉토리와 동일한 이름을 갖는 실행파일이 생성되었습니다.  

 

pi@raspberrypi:~/HelloWorldExample $ ls

hello.cpp  hello.o  HelloWorldExample  HelloWorldExample.pro  Makefile



이제 실행시켜 보면 터미널에 Hello World가 출력됩니다. 

Ctrl + C를 눌러야 프로그램이 종료됩니다. 

 

pi@raspberrypi:~/HelloWorldExample $ ./HelloWorldExample

Hello World

 

^C

 

 



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 강좌 06 - QToolBar  (0) 2023.10.05
QT 강좌 05 - QMenu  (0) 2023.10.05
QT 강좌 04 - QLabel  (0) 2023.10.05
QT 강좌 03 - Push Button  (0) 2023.10.05
QT 강좌 02 - Simple GUI  (0) 2023.10.05

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts