한국어
Qt
 

Qbs프로젝트파일에서 가장먼저 해줘야 할일은 다음과 같이 qbs를 포함해줘야한다.

import qbs

 

Product

Product는 프로젝트에서 가장 기본이되는 요소이다. 왜냐하면 Product은 일반적으로 빌드 프로세스의 결과물을 나타내기 때문이다. 일반적인 응용프로그램을 개발한다고 가정했을 때 우리는 Application이라는 Product의 일종을 사용하게 될것이다. 

 

product.png

▲Product 의 관계도

 

Application

응용프로그램 형태의 Product이다. 

 

CppApplication

일반적인 C/C++응용프로그램을 나타낸다.

CppApplication은 cpp 모듈에 종속 된 Product이다. 즉, 다음은 CppApplication과 완전히 같다.

Application {
    Depends { name: "cpp" }

    files: "main.cpp"
}

또는 다음과 같다.

Product {
    type: "application"
    Depends { name: "cpp" }
    files: "main.cpp"
}

간편하게 다음과 같이 사용할 수 있다.

CppApplication {
    files: "main.cpp"
}

 

QtApplication

QtApplication은 Qt.core 모듈에 종속 된 C++ 애플리케이션이다. 즉, CppApplication의 일종이다. 그러므로 다음과 완전히 같다.

CppApplication {
    Depends { name: "Qt.core" }
}

간편하게 다음과 같이 사용할 수 있다.

QtApplication {

}

 

Project

하나의 프로젝트파일(*.qbs)에는 하나의 Project 만 사용할 수 있으며 Project 는 여러 Product 를 포함할 수 있다. 만약 하나의 Product 로만 구성된 경우라면 Project 는 생략가능하다.

Project 는 Product 의 아이템이 될 수 없다는 점에 주의해야한다. 다음과 같이 사용할 수 있다.

Project{
    Application {
        Depends { name: "cpp" }
        files: [
            "main.cpp",
        ]
    }

    Product{
        name: "mylib"
        type: "staticlibrary"
        Depends { name: "cpp"; }
    }
}

또는 다음과 같이 다른 *qbs를 포함할 수 도 있다.

Project {
    references: [
        "product1/product1.qbs",
        "product2/product2.qbs"
    ]
}

 

Depends

Product 와 Module 간의 종속성을 나타낸다. 예를 들어 다음 제품은 cpp 모듈을로드한다.

Depends { name: "cpp" }

 

Module

Module 은 Product 빌드에 기여하기위한 아이템들 정의할 수 있다. Product 는 로드 된 모듈에서 속성을 읽고 쓸 수 있다. 모듈에는 다음 아이템들을 사용할 수 있다.

Depends
FileTagger
Group
JobLimit
Parameter
Probe
PropertyOptions
Rule
Scanner

Product 가 Module 에 대한 종속성을(Depends) 표현하면 Qbs는 Product 범위에서 Module 의 인스턴스를 만든다.

Product 는 다른 Product 의 속성에 엑세스 할 수 없지만 Export 을 사용하여 모듈의 종속성 및 속성을 다른 Product에 전달할 수 있다.

 

Group

파일을 그룹화하는 데 사용한다. Product 에 첨부되어있으며 아래 예제와 같이 여러 Group을 추가할 수 도 있다.

Application {
    Group {
        name: "common files"
        files: ["myclass.h", "myclass_common_impl.cpp"]
    }
    Group {
        name: "Windows files"
        condition: qbs.targetOS.contains("windows")
        files: "myclass_win_impl.cpp"
    }
    Group {
        name: "Unix files"
        condition: qbs.targetOS.contains("unix")
        files: "unixhelper.cpp"
        Group {
            name: "Linux files"
            condition: qbs.targetOS.contains("linux")
            files: "myclass_linux_impl.cpp"
        }
        Group {
            name: "FreeBSD files"
            condition: qbs.targetOS.contains("freebsd")
            files: "myclass_freebsd_impl.cpp"
        }
    }
    Group {
        name: "Files to install"
        qbs.install: true
        qbs.installDir: "share"
        files: "runtime_resource.txt"
    }
}

 

DynamicLibrary

동적 라이브러리를 만든다. 프로젝트에 응용프로그램과 동적라이브러리를 함께 빌드하려는 경우 다음과 같이 사용할 수 있다.

Project {
    CppApplication {
        name : "the-app"
        files : [ "main.cpp" ]
        Depends { name: "the-lib" }
    }
    DynamicLibrary {
        name: "the-lib"
        Depends { name: "cpp" }
        files: [
            "lib.cpp",
            "lib.h",
        ]
        Export {
            Depends { name: "cpp" }
            cpp.includePaths: [product.sourceDirectory]
       }
    }
}

 

StaticLibrary

정적 라이브러리를 만든다.

 

 

Qbs 모든 아이템들 : https://doc-snapshots.qt.io/qbs-1.14/list-of-items.html

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 86204
19 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 10224
18 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 10683
17 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 11390
16 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 11699
15 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 11982
14 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12126
13 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12629
12 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 13055
11 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13441
10 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 14023
9 Qt 프로그래밍의 시작 makersweb 2015.10.25 14415
8 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 14523
7 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 14985
6 QThread 소개 및 예제 makersweb 2019.12.25 19608
5 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 23682
4 Windows에서 Qt 설치 따라하기 file makersweb 2019.10.14 30939
3 QString 문자열 다루기 예제 운영자 2019.01.26 40371
2 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51864
1 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 221931