한국어
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 85951
99 Qml 어플리케이션 정적 빌드 file makersweb 2018.07.27 2136
98 [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) [2] j2doll 2019.08.08 2116
97 ShaderEffect QML Type 을 이용한 그래픽효과 file makersweb 2018.12.09 2114
96 Qt로 데이터를 직렬화(serialization)하는 방법 makersweb 2020.08.04 2060
95 MCU용 Qt에 대해서 makersweb 2019.08.22 1916
94 GPU가 없는 장치에서 Qt Quick을 사용 makersweb 2019.04.02 1857
93 Loader를 사용하여 동적으로 QML 로드 makersweb 2021.01.19 1813
92 Qt Property(속성) 시스템 makersweb 2023.01.08 1809
91 소스코드에서 환경변수 가져오기와 설정하기 makersweb 2018.10.08 1805
90 QSocketNotifier로 파일 디스크립터의 활동감지 makersweb 2019.08.28 1732
89 라즈베리파이3에서 Boot to Qt 실행해보기 makersweb 2019.11.13 1668
88 컨테이너에 적재된 객체를 편리하게 삭제하기 makersweb 2019.09.18 1665
87 Qt MQTT의 pus/sub 튜토리얼 file makersweb 2021.02.06 1642
86 VTK 를 사용해서 강력한 시각화(3D, Plotting, Chart)Qt 응용프로그램 개발하기 file makersweb 2022.10.16 1627
85 [Qt News] Qt for Python을 위한 기술 비전 j2doll 2019.08.20 1626
84 타임스탬프( timestamp) 유닉스 시간 makersweb 2017.10.19 1621
83 표를 만들고 PDF문서로 출력하기 file makersweb 2018.09.30 1604
82 Qt for Embedded Linux 화면출력 makersweb 2019.10.17 1599
81 QRandomGenerator 클래스를 사용하여 난수(random values) 생성 makersweb 2020.10.17 1571
80 ApplicationWindow 와 메뉴바(MenuBar)구성 file makersweb 2020.01.04 1500