QGroundControl(QGC) 개발자 가이드

- for Windows (3/9)

by 연화유심

Part 3. Source Code & Build + Navigating the Source Code (소스코드 빌드 및 탐색)

이 파트에서는 Windows 환경에서 QGroundControl(QGC)의 소스코드를 내려받고 빌드하는 방법을 설명한 후, 코드 구조와 주요 클래스를 탐색하는 방법을 다룹니다. 초보자도 단계별로 따라 할 수 있도록 설치 명령어와 IDE 사용법을 상세히 안내합니다.


1) 소스코드 클론

QGC 소스코드를 GitHub에서 내려받습니다.

반드시 --recursive 옵션을 사용해야 하위 모듈이 함께 내려옵니다.

```powershell
git clone --recursive https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git submodule update --init --recursive
```


2) Visual Studio 빌드

- Visual Studio 2019 이상 설치 (Desktop development with C++ 워크로드 포함)

windows part 3 그림.jpg

- `CMakeLists.txt` 파일을 열면 자동으로 솔루션 구성이 생성됩니다.
- 빌드 절차:
1. CMake로 구성(Configuration) 실행
2. `ALL_BUILD` 실행 → `QGroundControl.exe` 생성
3. 실행 후 기본 UI가 열리면 빌드 성공


3) Qt Creator 빌드

- Qt 5.15.x 설치 (MSVC 호환 버전 권장)
- Qt Creator 실행 → `qgroundcontrol.pro` 파일 열기
- Kit 선택: Desktop Qt 5.15.x MSVC
- Build & Run 클릭 → QGC 실행 확인

part 3 그림.jpg Image source: QGroundControl Documentation (CC BY 4.0, https://creativecommons.org/licenses/by/4.0/)


4) CMake 빌드

- CMake와 NMake를 활용해 빌드할 수도 있습니다.
```powershell
mkdir build && cd build
cmake .. -G "NMake Makefiles"
nmake
```
- 빌드가 완료되면 `release\QGroundControl.exe` 파일이 생성됩니다.


5) Docker 빌드 (선택)

- Windows 환경에서도 Docker로 QGC를 빌드할 수 있습니다.
```powershell
docker build -t qgc-dev .
docker run -it --rm qgc-dev
```
- 컨테이너 환경에서 빌드하면 의존성 충돌 문제를 줄일 수 있습니다.


6) 코드 디렉토리 구조

- src/ : QGC 핵심 로직 (Vehicle 관리, MAVLink 통신, 미션 처리)
- qml/ : QML 기반 UI 코드 (Plan View, Fly View, Analyze View)
- libs/ : 외부 라이브러리 및 공용 모듈
- resources/ : 아이콘, 이미지, 번역 파일
- test/ : 단위 테스트 및 통합 테스트 코드
- cmake/ : 빌드 스크립트 및 툴체인 설정


7) 주요 클래스

- QGCApplication : 프로그램 시작점, 초기화 및 전역 상태 관리
- MainWindow : 메인 윈도우 UI 관리
- Vehicle : 드론 객체, 상태 관리 및 제어
- MAVLinkProtocol : MAVLink 메시지 송수신 및 파싱 담당
- MissionManager : 미션 아이템 관리
- GeoFenceManager : 비행 금지 구역 관리
- RallyPointManager : 긴급 착륙 지점 관리


8) 클래스 계층 구조

QGC의 클래스는 다음과 같이 계층적으로 구성됩니다:
- Application Layer : QGCApplication, MainWindow
- Vehicle Layer : Vehicle, MissionManager, GeoFenceManager
- Communication Layer : MAVLinkProtocol, LinkManager
- UI Layer : QML 파일 및 연동되는 C++ 클래스


9) Windows 개발 환경 팁

- Visual Studio와 Qt Creator 중 하나를 선택해 개발하면 됩니다.
- Vehicle 및 MAVLinkProtocol 클래스를 먼저 분석하면 전체 흐름을 빠르게 이해할 수 있습니다.
- Qt Creator에서는 QML과 C++를 동시에 열어 연동 구조를 쉽게 확인할 수 있습니다.
- Visual Studio에서는 솔루션 탐색기를 활용해 구조를 확인하면 효율적입니다.


10) 다음 단계

이제 QGC 소스코드를 빌드하고 구조를 이해했으므로, Part 4에서는 MAVLink 통신 흐름과 플러그인 아키텍처를 Windows 개발 환경에서 다룹니다.

작가의 이전글QGroundControl(QGC) 개발자 가이드