- for Windows (7/9)
이 파트에서는 Windows 환경에서 QGroundControl(QGC)을 커스터마이징하고 맞춤형 빌드를 제작하는 방법을 설명합니다. 공식 Developer Guide의 Custom Build 지침을 반영하여 저장소 준비, 플러그인 확장, 리소스 오버라이드, UI 커스터마이징, 브랜칭 전략, MAVLink 커스터마이징 절차까지 포함했습니다.
- QGC는 기업/연구소 환경에서 브랜드화, 기능 제한, 전용 배포본 제작을 위해 커스터마이징할 수 있습니다.
- 변경 가능 항목: 로고, 색상 테마, 툴바, Fly View UI, 첫 실행 프롬프트, 카메라 컨트롤 등.
- GitHub에서 QGC 저장소를 Fork합니다.
- `custom_example` 디렉토리를 `custom`으로 복사한 후 이 안에서 커스터마이징을 시작합니다.
- Visual Studio에서 솔루션을 열면 `custom/` 디렉토리의 코드가 우선 적용됩니다.
- QGC는 플러그인 구조를 통해 펌웨어별/기능별 확장을 지원합니다.
- FirmwarePlugin: 펌웨어(PX4/ArduPilot)별 동작 정의.
- AutoPilotPlugin: 파라미터 로딩 및 UI 연동.
- QGCCorePlugin: 앱 전역 UI 및 동작 수정.
- FirmwarePlugin과 AutoPilotPlugin 클래스를 확장하면 특정 드론에 맞는 기능을 추가할 수 있습니다.
- 예: 새로운 센서 데이터를 Vehicle에 연동하거나, 파라미터 UI를 확장
- Windows 환경에서 Visual Studio로 빌드 시 이 플러그인이 자동 반영됩니다.
- `resources.qrc` 파일을 수정해 아이콘, 이미지, 문자열을 교체할 수 있습니다.
- 예: 기업 로고 추가, 색상 테마 변경, 번역 문자열 수정.
- 빌드 시 수정된 리소스가 EXE 파일에 반영됩니다.
- 첫 실행 프롬프트: `custom/` 내 QML 파일 수정으로 변경 가능.
- Toolbar 항목은 XML 및 QML 설정을 통해 재구성할 수 있습니다.
- Toolbar: 버튼 추가/삭제, 항목 재배치.
- Fly View: 전용 위젯 삽입, 사용자 맞춤형 레이아웃 구성.
- Stable Branch 동기화: upstream 최신 안정 버전 기반.
- Out-Of-Band 릴리스: 특정 기능만 포함한 독립 배포.
- Daily Build: 최신 커밋 자동 빌드.
- 오픈소스 QGC 저장소(Fork)와 내부 개발 브랜치를 분리하는 것이 좋습니다.
- 내부에서는 LTS(Long Term Support) 브랜치를 운영해 안정적인 배포를 보장
- Windows 환경에서는 GitHub Actions 또는 Azure Pipelines를 통해 자동 EXE 빌드를 권장합니다.
- `CustomOptions.cmake` 또는 `CustomOverrides.cmake`에서 dialect 지정.
- 프로젝트 전용 MAVLink 메시지를 추가하거나 수정할 수 있습니다.
- Visual Studio 빌드 시 자동 반영됩니다.
- Visual Studio에서 `custom/` 경로의 코드가 정상 반영되는지 확인하세요.
- WiX Toolset을 사용하면 MSI/EXE 설치 패키지를 제작할 수 있습니다.
- 배포 절차:
1) 빌드 산출물 정리
2) WiX 설정 파일 작성
3) `candle` 및 `light` 명령어 실행으로 MSI 생성
- 최종 배포본은 내부 테스트 후 사용자에게 배포
- 사내 배포 시 코드 서명을 적용하면 보안 경고를 줄일 수 있습니다.
- 리소스 변경은 간단하지만, 코드 수정은 반드시 단위 테스트 후 진행하세요.
- 빌드 자동화를 적용하면 배포 속도가 크게 향상됩니다.
- Windows 빌드 환경에서는 Visual Studio 2019 이상을 사용하는 것이 안정적입니다.
- 커스터마이징 내용을 문서화해두면 팀 협업에 유리합니다.
맞춤형 빌드 제작 방법을 익혔으므로, Part 8에서는 QGC에 코드 기여를 하기 위한 절차와 코딩 규칙, Pull Request 과정을 Windows 환경 관점에서 다룹니다.