[Qt] 입문자들을 위한 배경지식

2016. 3. 16. 16:43·TEMP/내용 정리중인 글들..
저도 아직 제대로 안다고 하기 어렵지만.. 입문하면서 굉장히 많이 헤맨 기억이 있네요.
현재의 제가 과거의 저에게 이것저것 일러준다고 생각하고 쓰고 있습니다;;
정확한 지식은 아니지만 이렇게라도 이해하고 있으면 쌩판 모르는 것보단 낫겠지.. 싶은 것들이요.
아마 유효한 독자층은 이제 막 C++을 배운 이들, 운영체제라곤 윈도우즈 시리즈 밖에 안 써본 이들,
특히 과제 말고는 프로그램 개발 경험이 없는 이들일 것입니다.

우선 Qt는 C++ Library..를 주축으로 하는 프로그램 개발 도구입니다.
아마 Qt를 배우겠다고 하는 분들은 대부분 C++을 아는 분들이겠지요.
혹시나 C++을 안배우셨다 하는 분들은 C++ 공부부터.. http://www.winapi.co.kr/ 여기가 성지입니다. ㅎㅎ
문법 익숙해진 뒤엔 http://www.cplusplus.com/ 여기서 class 및 function 목록을 검색할 수 있습니다.

이제 Qt를 배워야겠는데.. 이거 은근 설치부터 난해합니다.
Qt for Windows 말고도 Qt for Mac, Qt for Linux/X11 도 있구요.
거기다가 Qt SDK: Complete Development Environment 와 Qt: Framework Only 중에 선택할 수도 있습니다.
원래는 SDK가 뭔지, Framework가 뭔지 모르는 건 전부 구글 검색해 보며 알아내는 것이 정석이지만
작년에 저는 머리를 비우고 조교님이 올려주신 설치법대로 주르륵 따라 하다가 막혀서
스팀이 돌던 끝에 리눅스를 설치해보고 돌돌돌돌 말렸더랬지요. 신세계였습니다. ㅡ,.ㅡ

여튼 그래서! 그때 알았으면 좋았을 기본 개념들을 간략히 설명하려 합니다.
될 수 있으면 기초부터 설명해야겠지요.





우선 Linux는 운영체제입니다. Windows XP, Windows 7 등과 같은 운영체제입니다.
모든 운영체제의 핵심이 되는 부분은 kernel & shell 입니다. (정확히는 kernel & system program.)
리눅스 shell의 하나인 bash shell입니다. MS-DOS와 유사합니다.

윈도우즈 운영체제들도 알고보면 kernel이라 하는 것과 cmd 명령프롬프트를 가지고 있지요.
우리 학교에서 Putty(예전엔 telnet)를 통해 shell.postech.ac.kr에 접속해서 리눅스를 쓰는 건 바로
학교 메인 서버 컴퓨터에 리눅스가 설치되어 있는 것이고
우린 그 핵심 기능에만 접근해서 쓰는 것이라고 할 수 있습니다.





다만 요즘 운영체제들은 GUI(Graphical User Interface) Desktop Environment를 함께 제공하는 것이 대세입니다.
GUI 데스크톱 환경이란 - 바탕화면 존재하고 마우스랑 아이콘 쓸 수 있고 파일 탐색기 제공되고..
대충 뭐 그런 거라고 생각하시면 쉽습니다.
Windows 계열 OS는 운영체제의 핵심 부분과 GUI 환경이 완벽히 결합된 형태로 완성, 출시됩니다.
리눅스는 open source 정신이 원칙이다 보니 다양한 GUI Desktop이 개발 중이고
하나의 kernel(핵심 부분)에 여러 종류의 GUI Desktop을 설치할 수도 있습니다.
(일반적으로 하나만 선택해서 쓰지만요.)
Linux 기반 GUI Desktop 환경에는 Gnome, KDE, Xfce 등이 있습니다.
Mac OS도 비슷한 것이라고 생각할 수 있을 겁니다.
각각 우분투 Gnome Desktop 환경 / 쿠분투 KDE Desktop 환경.
처음 봤을 땐 이런 운영체제도 있구나.. 싶었습니다.

Qt로 만든 프로그램은 이러한 GUI Desktop 환경 안에서만 실행됩니다.
shell (터미널)만 제한적으로 가동 중인 운영체제에서 Qt 프로그램은 실행시킬 수 없습니다.
즉, shell.postech.ac.kr에 접속해서 Qt 프로그램을 작성할 수는 없습니다.





그리고 SDK 및 IDE 등에 대한 설명도 필요하겠지요.
프로그래밍을 하려면 일단 Language를 선택해야 하고 (ex. C, C++, JAVA, MATLAB, ...)
해당 언어의 Library가 있어야 손쉽게 프로그래밍할 수 있습니다. (ex. #include <iostream>)
그리고 Text Editor도 꼭 필요하지요. (ex. 메모장, vi, emacs)
Compiler는 작성된 코드를 기계어로 변환시켜주는 역할을 합니다.
Debugger(디버깅 툴)는.. 적어도 거대 프로젝트라면 필수 도구가 되겠지요.
make 같은 툴도 (이것도 일종의 프로그램입니다.) 거대 프로젝트에선 필수이구요.
...이 모든 것들을 한 데다 모아놓은 것이 바로 IDE(Intergrated Development Environment) 입니다.
Visual Studio 2005, Qt Creator 등이 대표적인 예라고 할 수 있습니다.
가령 Visual Studio에서 코딩하다가 F5키 누르면 컴파일 되고 디버깅 되고.. 모든 걸 한꺼번에 할 수 있지요.
SDK(Software Development Kit)는 IDE에 유용한 툴들을 더 추가한 것입니다.
가령 내가 짠 프로그램의 다국어 지원을 가능케 해주는 Qt Linguist,
마우스로 창과 버튼을 그려서 그림판 쓰듯 프로그램을 만들 수 있는 Qt Designer 등을 예로 들 수 있습니다.





또 한 가지 알아두면 좋은 배경지식.
C++ Library도 몇몇 종류가 있는데요.
GNU (ANSI) C++과 Microsoft C++ 등이 존재하며, 둘은 미묘하게 다릅니다.
국제 표준은 ANSI C++ 인데 MS사가 워낙 힘이 세서 독자적인 걸 밀고 나가고 있지요. -_-..
여튼 C++ Library가 다르니 컴파일러도 다른 것을 씁니다.
ANSI C++은 g++이란 컴파일러를 주로 쓰는 반면 Microsoft C++은 자체 컴파일러를 가지고 있습니다.
디버깅 툴도 서로 다른 것을 쓰는 걸로 알고 있습니다. (ANSI C++은 gdb를 씁니다.)
여기서 GNU는 운영체제 및 핵심 프로그램들을 open source로 공유하자는 단체이자 프로젝트로,
Linux나 g++, gdb 등은 GNU 프로젝트를 통해 제작, 배포되고 있습니다.
따라서 Linux와 g++, gdb, make 은 한 가족이라고 할 수 있습니다.

그런데 Linux 프로그램은 Windows에서 실행할 수 없습니다. 반대 경우도 마찬가지구요.
모든 프로그램은 각자의 OS에 맞춰서 제작되고 compile 되기 때문입니다.
마치.. 고등어는 땅에서 살 수 없고 꼽등이는 물 속에서 살 수 없는 것과도 같은 이치이지요.
따라서 g++, gdb, make 등을 Windows에서 쓰려면 Windows에 맞게 따로 제작을 해야만 합니다.
그래서 제작된 것이 MinGW(Minimalist GNU for Windows) 입니다.
Windows와 호환되는 C++ library 및 GNU 필수 sofrtware들 꾸러미를 Windows용으로 제작한 것이지요.

Qt는 기본적으로 C++ 언어를 활용해 만든 user defined(?) library입니다.
user라 하기엔.. trolltech란 회사에서 만들기 시작하고 nokia가 인수해 발전시키고 있긴 한데요.
Qt 제작 프로젝트가 커져서 IDE인 Qt Creator도 제작하고 Qt Designer와 같은 것도 만들고 한 거지요.
단, Qt library 제작에 사용된 C++은 ANSI C++이므로 Windows에서 사용하려면 조금 문제가 있습니다.
Windows C++ library와는 호환이 안될뿐만 아니라 컴파일하려면 g++을 사용해야 합니다.
때문에 Windows에서 Qt Programming을 하려면 MinGW를 설치해야만 합니다.





그리고 마지막으로 환경변수 설정.
Environment Variable은 프로그래밍 할 때 쓰는 global variable과 비슷한 느낌입니다.
어느 경로에서, 어떤 프로그램이라도 사용 가능한 variable이라 할까요?
원래 cmd 명령프롬프트(혹은 shell)에서는 현재 경로에 있는 프로그램만을 실행할 수 있는데요.
어떤 프로그램(이 저장된 경로)이 환경변수로 등록되면 그것은 어느 경로에서든 접근, 실행 가능합니다.
구체적으로 Qt compiler나 qmake 등의 내부 프로그램들(이 저장된 경로)을 환경변수에 등록해야 하구요.

이는 Windows용 Qt 설치 시에만 필요한 작업이고 Linux에서 설치 시에는 자동으로 수행되는 듯합니다.
대신 Linux에 설치할 때는 Qt의 보조 C++ library들을 수동적으로 설치해줘야 합니다.
(Linux에 Qt 설치는 http://ttti07.egloos.com/3511303 참고)



*덧1. 물론 nokia에서 Visual Studio Add-in도 제작하고
VS2008 compiler와 호환되게 만든 Qt Library도 배포하지만
분명 예전엔 그게 전부 Commercial version에서만 지원받을 수 있었습니다.
지금도 그런 말이 보이기도 하는데 정확한 정보는 모르겠네요. -_-;

*덧2. Qt는 GNU software를 활용하며, Linux 또한 GNU에서 만든 것입니다.
때문에 Linux에서 Qt Programming을 하면 몸에 딱 맞는 옷을 입혀준 느낌이 듭니다.
MinGW 같은 것 설치할 필요도 없구요.
시간적 여유가 있고 호기심도 적잖이 있다면 아예 리눅스 기반 운영체제를 설치해서 작업해보는 것도 추천합니다.
특히 우분투(Ubuntu)를 추천하는데요. 사용자 층이 두터워 정보를 얻기 쉽고 한글화도 잘 되어있습니다.
몇 년 전까지만 해도 리눅스는 버그가 많고 초보자들에게 너무 어려웠다고 하는데
무서운 속도로 개선되어 근래에는 처음 사용자들도 배우기가 쉽게 되었습니다.
물론 아무리 그래도 새로운 운영체제를 접하는 것은 모험이므로 여유 있을 때 구글 검색하며 배우도록 합시다.
Qt, 입문, 배경지식

퍼블리싱 및 추천

  • 내보내기
    • 밸리 : IT 2010/11/06 07:11
    • 태그 : 입문, 배경지식, Qt

같은 카테고리의 글

트랙백(0) 덧글(3)

덧글

  • 라우드니스 2010/11/28 01:34 # 답글

    Qt에서 GUI도 사용가능한 하나의 객체일 뿐입니다.

    그러므로, 사용하지 않으면 console 프로그램 제작도 가능합니다;
  • ☆~ 2010/12/23 16:17 # 삭제 답글

    저도 부가적으로 지적한다면 Qt는 'GUI환경에서 돌아가기 위한' 라이브러리가 아닙니다.
    Qt 프로젝트 파일 보시면 QtGui가 라이브러리에 추가로 구성된것을 보실 수 있고, QtGui.dll로 따로 라이브러리가 구성되어있습니다. QtCore와 QtGui가 따로 구성된것은 바로 Gui가 선택사항이기 때문입니다.
    Core는 말 그대로 핵심이기 때문에 필수 요소이고 Gui라이브러리를 안쓰면 콘솔 어플과 동일하게 만들 수 있는겁니다.

    또한 억지좀 부리자면 GUI어플이라고 해서 콘솔로 코딩하고 빌드할 수 없는건 아닙니다. 더 억지를 부리면 리눅스환경에서는 x11 터널만 사용 가능 하면 원격 접속을 시도한 컴퓨터에서 대신 GUI화면을 랜더링할 수 있습니다.

    결 론은 Qt는 GUI 어플에 특화 된 것일 뿐 콘솔 어플을 만들 수 없는게 아니며(논외지만 links 라는 프로그램을 알아보세요. 기본으로 콘솔 어플이지만 GUI환경 위에서 그래픽을 표현하기도 합니다.), GUI 기반 어플이라고 해서 콘솔에서 코딩 못하는게 아니며(콘솔에서 그래픽 화면을 못볼 뿐이죠.), X11포워드만 터미널에서 지원 하면 자신의 컴퓨터에서 어플리케이션이 실행 된 모습을 볼 수 있습니다.

    이 댓글을 통해 Qt는 GUI 어플 전용이구나 라고 오해 하실 분 생기지 않기를 바랍니다.
  • ☆~ 2010/12/23 16:34 # 삭제 답글

    지적사항이 더 있네요. Qt의 소스코드 배포본이 FTP 를 통해 재공되는데 그곳에서 볼 수 있는 메뉴얼에 따르면 4.5버전 기준으로는 VS 2005를 사용하여 라이브러리를 빌드 하는게 검증됨(즉 안전함)으로 되어 있습니다.
    참고 할 수 있는 주소: http://doc.qt.nokia.com/4.7/compiler-notes.html#visual-studio-windows
    현 재 4.7은 2008에서도 잘 빌드 되며 정식 다운로드에서도 VS 2008 버전으로 빌드한 라이브러리 또한 공식 배포 하고있습니다. 그리고 Commercial version은 유료 버전입니다. 카피라이트를 지울 수도 Qt라이브러리를 Static으로 포함 시켜서 Qt를 사용 했다는걸 전혀 티 안내면서 상용 프로그램으로 배포할 수도 있고, 마음대로 변경해도 되는 버전인겁니다. 윈도우즈도 돈주고 사면 공식 지원 받을 수 있듯이 Commercial version은 유료 버전이기 때문에 정식 지원을 받을 수 있는겁니다.

    몇가지 더 지적사항 있지만 큰 문제가 없다고 판단되어 줄입니다.


'TEMP > 내용 정리중인 글들..' 카테고리의 다른 글

20160412 (화) 출장 보고서 작성 방법, LVDS 란, Subnet 이란, 소프트웨어 공학문서 작성,  (0) 2016.04.12
[Qt]  (0) 2016.03.16
MFC 에 대한 정의 및 단점, 장점  (0) 2016.02.11
20160211 - MFC : 1. 트리 컨트롤 에 관해서,  (0) 2016.02.11
20160211 - MFC : 1. 33번 폼 리스트 값 처리 관련해서 좀 살펴보다가,  (0) 2016.02.11
'TEMP/내용 정리중인 글들..' 카테고리의 다른 글
  • 20160412 (화) 출장 보고서 작성 방법, LVDS 란, Subnet 이란, 소프트웨어 공학문서 작성,
  • [Qt]
  • MFC 에 대한 정의 및 단점, 장점
  • 20160211 - MFC : 1. 트리 컨트롤 에 관해서,
쭌의 숲 속 도서관
쭌의 숲 속 도서관
  • 쭌의 숲 속 도서관
    쭌의 숲 속 도서관
    쭌의 숲 속 도서관
  • 전체
    오늘
    어제
    • 분류 전체보기 (84)
      • [Programming] Language (13)
        • C (10)
        • JavaScript (2)
        • JavaScript (WEB) (0)
        • TypeScript (0)
        • 기술 면접 (1)
        • Python (0)
      • [Programming] Framework (1)
        • Nest.js (1)
        • Svelte (0)
      • [Cloud] Amazon Cloud (0)
        • AWS-SDK (0)
        • Architecture (0)
        • Lambda (0)
        • IoT Core (0)
        • RDS (0)
      • Language (1)
        • English (1)
      • OS (7)
        • Window (7)
        • Linux (0)
      • Certificate (3)
        • 네트워크 관리사 2급 (2)
        • [기본] AWS Certified Cloud Pr.. (1)
        • [준전문가] AWS Certified Soluti.. (0)
      • 유용한 사이트 (3)
      • 이벤트 및 행사소식 (0)
      • ETC (23)
        • 프로그램 (5)
        • 운동 (8)
        • IT (2)
        • 생활 (2)
        • 쇼핑몰 (3)
        • 제품 후기 (3)
        • 여행 (0)
        • 맛집 (0)
      • TEMP (33)
        • 내용 정리중인 글들.. (33)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • WoWCat
  • 공지사항

  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
쭌의 숲 속 도서관
[Qt] 입문자들을 위한 배경지식
상단으로

티스토리툴바