한국어
Qt
 

2018년 Qt는 기존 빌드 시스템인 qmake 와 CMake 에 집중한다며 qbs를 포기하기로 발표하였다. 지원을 올해말까지(2019년) 한정하였는데 그 시점을 얼마 남겨두지 않은 시점에서 qbs에 대해서 다뤄보려한다.

공식 기사 : https://www.qt.io/blog/2018/10/29/deprecation-of-qbs

 

이 시점에 qbs에 대해 다루는 이유는 qbs가 가진 장점이 분명히 있기 때문이다. (비록 qt에서 버리기로 발표하였지만...) qbs프로젝트가 어떻게 흘러갈지 모르겠지만 독자적인 오픈소스프로젝트로 성장해 나갈 가능성도 있다고 본다.

 

Qbs는 다음과 같은 장점 및 특징이 있다.

  • 쉬운 언어를 사용
  • 플랫폼 및 프로그래밍 언어에 독립
  • 정확하고 빠른 증분 빌드
  • 확장 가능한 아키텍처
  • IDE에 쉽게 통합

 

Qbs소개

초기 qmake를 개선, 대체할 목적으로 시작된 Qt Build Suite, 즉 qbs ("Cubes"로 발음) 프로젝트는 다양한 플랫폼에서 소프트웨어 프로젝트의 빌드 프로세스를 편리하게 관리하도록 설계된 빌드 자동화 도구이다. (qbs사용법을 보면 yocto프로젝트의 레시피 작성 컨셉과 비슷한 느낌이 든다.)

 

qmake와 달리 qbs는 Qt 버전과 연결되어 있지 않으며 프로그래밍 언어, 툴킷 또는 사용 된 라이브러리에 관계없이 모든 소프트웨어 프로젝트에 사용할 수 있으며 커머셜 또는 LGPL 오픈소스 라이센스로 사용할 수 있다.

 

Qbs는 프로젝트 파일의 정보를 기반으로 응용 프로그램을 빌드한다. 프로젝트파일(*.qbs)은 최근 많은 Qt 프로젝트에서 사용되는 QML 언어로 작성된다. 

QML은 간결하고 배우기 쉽고 직관적인 언어이긴 하지만 qbs의 QML 아이템들의 사용법등을 익히려면 초기 어느정도 학습기간이 요구된다. 

 

다음은 QtCreator에서 생성한 가장 일반적인 형태의 프로젝트 파일인데 간단한 프로젝트여서 그런지 실제로 굉장히 심플한 느낌이다.

import qbs

CppApplication {
    consoleApplication: true
    files: "main.c"

    Group {     // Properties for the produced executable
        fileTagsFilter: "application"
        qbs.install: true
        qbs.installDir: "bin"
    }
}

 

각 프로젝트 파일은 하나의 project와 하나이상의 product를 포함 할 수있다. 이 프로젝트파일은 product에서 파생한 CppApplication을 정의한 모습이다.

 

Qbs 설치방법

Qbs 는 Windows, macOS, Linux 및 FreeBSD에서 사용할 수 있으며 Qt 인스톨러로 Qt Creator를 설치했다면 Qt Creator의 bin 디렉토리에서 qbs 실행 파일을 찾을 수 있다.

 

사전 빌드된 Qbs만을 설치하려면 다음과 같은 방법으로 가능하다.

 

Windows 용 바이너리 (x86 및 x64)는 다음 링크 페이지에서 제공한다.

https://download.qt.io/official_releases/qbs/

 

macOS에서는 MacPorts 또는 Homebrew 패키지 관리자를 사용하여 편리하게 설치할 수 있다.

brew install qbs

or

port install qbs

 

Linux 에서는 배포판의 패키지 관리 시스템을 통해 사용할 수 있다.(다음은 우분투에서 패키지를 설치하는 방법이다.)

sudo apt install qbs

 

다음은 qbs의 공식 저장소이다.

https://code.qt.io/cgit/qbs/qbs.git

 

공식 저장소 미러

https://github.com/qbs/qbs

 

다음 글에서 실제 활용법을 소개 하도록 하겠다.

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 85936
119 임의의 메모리 영역(QImage)에 QPainter를 이용하여 그리기 file makersweb 2017.12.19 3445
118 QML 코딩 규칙 makersweb 2021.09.05 3244
117 qbs 사용 방법(Helloworld) file makersweb 2019.10.23 3094
116 QString 문자열에서 숫자만 추출해서 QString으로 반환 makersweb 2017.01.10 3078
115 다국어 지원 어플리케이션 개발 file makersweb 2018.01.27 2977
114 QTextCodec클래스를 사용하여 유니코드와 EUC-KR 변환 makersweb 2019.03.25 2892
113 컨테이너 클래스 - QVector makersweb 2020.03.17 2842
112 UI 폼(Form)작성 시 탭 순서(Tab Order) 설정 file makersweb 2020.08.24 2782
111 QML에서 멀티 스레드(multithreading) 프로그래밍 file makersweb 2019.05.25 2656
110 Qt5기반 독립 프로세스(out-of-process)로 동작하는 가상키보드(virtual keyboard) file makersweb 2019.02.24 2628
109 구글 클라우드 Speech-To-Text API를 Qt기반(C++, Qml)테스트 [7] file makersweb 2019.01.20 2619
108 Qt3D의 QML 타입으로 3D렌더링 file makersweb 2019.11.20 2528
107 리눅스에서 Qt4.8기반 어플리케이션의 한글입력 file makersweb 2018.11.29 2437
106 QtWayland와 ivi-compositor file makersweb 2018.12.27 2403
105 [Qt News] Qt6 Git 개발 초기 단계 시작하기 j2doll 2019.08.02 2332
104 QOpenVirtualkeyboard(Qt 5용 한글 및 영문, 숫자 가상키보드) file makersweb 2019.11.27 2241
103 main함수 명령줄 옵션 해석 makersweb 2020.09.01 2232
102 Qt Creator에서 임베디드 장치로 deploy설정(Custom Process Step) file makersweb 2019.06.15 2200
101 OpenGL 렌더링을 QtQuick과 통합하는 방법 file makersweb 2019.10.01 2181
100 Qt Creator에서 Qt의존성 라이브러리 자동복사하기 file makersweb 2019.10.19 2165