한국어
오픈소스포럼
 이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.

Visual Studio Code 에서 Qbs 확장을 설치하고 C/C++ 프로그래밍을 할 수 있다. 이전에 Qbs는 Qt Creator 또는 Visual Studio에서만 사용할 수 있었다. 이 확장은 VSCode 의 확장 메뉴에서 사용할 수 있다. 현재 기준으로 Qbs 확장은 다음을 지원한다.

  • Qbs 프로젝트가 있는 디렉토리 열기
  • 프로젝트 파일 선택(최상위 디렉토리에 파일이 여러 개 있는 경우)
  • 프로필 선택
  • 구성 선택
  • 구축할 제품 선택
  • 터미널 또는 디버그에서 실행할 제품 선택

또한 Qbs 확장은 IntelliSense를 통한 정확한 C/C++ 코드 강조 표시와 Qbs 파일에 대한 기본 강조 표시를 제공한다.

 

종속성 설치

당연한 얘기지만 VSCode 가 설치되어 있어야 한다. 그리고 Qbs 도 1.16 이상이 필요하다. Qbs는 공식 다운로드 페이지나 여러 패키지 저장소(Chocolatey, MacPorts, Homebrew)에서 얻을 수 있다. 

VSCode 를 열고 확장에서 C/C++ 및 Qbs 확장 프로그램을 설치한다.

이미지 1.png

그리고 가장 중요한 툴체인이 준비되어 있어야 한다. 여기서는 MinGW 를 사용한다.

 

확장 설정

Qbs 확장 설정에서 qbs 실행 파일의 경로를 설정해야 한다. 설정하려면 '파일 → 환경설정 → 확장 프로그램'으로 이동하여 Qbs 확장 프로그램에서 '관리' 버튼을 클릭하고 '확장 프로그램 설정'을 선택한다. 다음으로 "Qbs Path" 필드에서 Qbs에 대한 경로를 설정한다.

이미지 4.png

 

설정을 끝내고 VSCode를 재시작 한다.

명령 팔레트 (Ctrl+<Shift>+P) 를 실행하고 QBS: detect profiles 를 입력하여 설치된 툴체인을 감지하도록 한다.

 

기존 qbs 프로젝트 폴더를 열 수 있다. 

open_folder.png

 

여기서 추가할 프로젝트는 다음과 같이 아주 간단하다.

qbsproject.png

 

main은 단순히 helloworld 를 출력한다.

main.cpp

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

 

이어서 CppApplication 프로젝트를 빌드하기 위해 작성한 example.qbs 파일이 있다.

example.qbs

import qbs

CppApplication{
    name: "example"
    files: ["main.cpp"]
}

 

구조는 다음과 같다.

이미지 3.png

 

빌드를 시작하기 전에 프로파일을 선택해줘야 한다. QBS: Select Profile 을 입력한다.

2021-09-10 (5).png

 

사용 가능한 프로파일 목록에서 선택한다. (필자는 mingw32 를 선택했다.)

2021-09-10 (10).png

 

그리고 qbs: select build configuration 명령이나 하단의 메뉴를 통해 릴리즈 또는 디버그 모드로 설정할 수 있다.

example.png

 

QBS: Build 명령을 입력하여 빌드를 실행해 보자.

2021-09-10 (11).png

 

QBS: Run 명령으로 빌드된 Application 을 실행 할 수 있다.

2021-09-10 (12).png

 

QBS: Debug 명령으로 디버그로 실행 할 수 있으며 일반적인 방법(F9 키로)으로 브레이크 포인트를 지정할 수 도있다.

 

프로젝트에 새로운 C++ 파일 을 추가하려면 "새 파일" 을 클릭하고 파일 이름을 입력한다.

add_file.png

 

MyApp.hpp와 MyApp.cpp 를 추가하고 example.qbs 에는 MyApp.cpp 를  추가 해줬다. 

import qbs

CppApplication{
    name: "example"
    files: ["MyApp.cpp", "main.cpp"]
}

 

main() 에서는 MyApp 객체를 생성하고 hello() 를 호출한다.

#include "MyApp.hpp"

int main()
{
    MyApp app;

    app.hello();

    return 0;
}

 

빌드 후 실행해 보자.

 

qbs 관련 전체 명령은 다음 링크에서 찾을 수 있다.

https://github.com/denis-shienkov/vscode-qbs/blob/master/docs/how-to.md#open-a-project

 
번호 제목 글쓴이 날짜 조회 수
35 Wayland IVI Extension 간단 리뷰 file makersweb 2019.05.12 2259
34 GDBus 튜토리얼(GDBus tutorial) file makersweb 2019.06.30 10377
33 텔레그램(Telegram) Bot 개발 file makersweb 2019.07.21 5716
32 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 file makersweb 2019.10.06 3040
31 webOS소개 및 Raspberry Pi 3 에서 실행 file makersweb 2019.10.13 3884
30 도커(docker)설치 및 기본 명령어 makersweb 2019.12.02 483
29 Pluma(C++ Plug-in Management Framework) 튜토리얼 file makersweb 2019.12.07 14012
28 [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 file makersweb 2020.04.11 3076
27 ZeroMQ의 기본 메세지 패턴들 file makersweb 2020.07.31 8525
26 ZeroMQ 비동기 클라이언트/서버 패턴 file makersweb 2020.08.13 1782
25 Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 file makersweb 2020.09.05 1142
24 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL file makersweb 2020.09.16 3363
23 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) file makersweb 2020.09.16 796
22 GENIVI DLT(Diagnostic Log and Trace) 활용 file makersweb 2020.11.19 8398
21 Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 file makersweb 2020.11.28 9090
20 라즈베리파이4에서 openFrameworks 예제 실행 file makersweb 2020.12.13 560
19 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2072
18 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 682
17 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 867
16 CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 1720