Qt Protobuf
Qt Protobuf 생성기 플러그인은 .proto
파일에서 Qt 기반 클래스를 생성합니다. 이 클래스를 사용하여 관련 프로토뷰 메시지를 직렬화 및 역직렬화할 수 있습니다.
개요
프로토콜 버퍼란 무엇인가요?
프로토콜 버퍼는 구조화된 데이터를 직렬화하기 위한 언어 중립적이고 플랫폼 중립적이며 확장 가능한 메커니즘으로, 간결하고 사용하기 쉽습니다:
- 사용자는
.proto
파일에서 데이터 구조를 정의합니다. - 빌드 시
.proto
파일에서 프로토 컴파일러가 호출되어 다양한 프로그래밍 언어로 코드를 생성합니다.
제공된 형식은 네트워크 트래픽이나 장기 데이터 저장에 적합합니다.
프로토콜 버퍼는 어떤 문제를 해결하나요?
프로토콜 버퍼는 최대 수 메가바이트 크기의 유형 및 구조화된 데이터 패킷에 대한 직렬화 형식을 제공합니다. 이를 통해 기존 데이터를 무효화하거나 코드를 업데이트할 필요 없이 새로운 정보로 확장할 수 있습니다. 자세한 내용은 프로토콜 버퍼 개요를 참조하세요.
사용 시 이점 Qt Protobuf
모든 Qt 기반 프로젝트에서 프로토콜 버퍼 메커니즘을 사용할 수 있습니다:
- 프로토콜 버퍼 컴파일러를 명시적으로 호출할 필요가 없습니다.
- 생성된 코드를 프로젝트 트리에 수동으로 통합하지 않아도 됩니다.
- 직렬화 및 역직렬화 API에 액세스하려면.
- 생성된 프로토콜 버퍼프 메시지에 대한 통합 속성 메커니즘을 사용합니다.
- 통합된 gRPC 클라이언트 지원은 Qt GRPC 모듈을 참조하세요.
- 생성된 프로토뷰 메시지에 대한 통합 QML 유형 지원을 보려면 다음을 참조하세요.
- 활성화된 Qt Core 및 Qt GUI 유형을 *.proto 스키마의 일부로 사용하는 경우.
모듈 사용하기
Google 프로토콜 버퍼는 확장을 지원하는 protoc
이라는 생성기를 제공합니다. qtprotobufgen 도구는 protoc
의 확장이며 호스트 시스템에 protoc
을 설치해야 합니다. 설치에 대한 자세한 내용은 Protoc 설치를 참조하세요.
- Linux용 설치 예, apt:
apt install -y protobuf-compiler protoc --version # Ensure compiler version is 3+
- vcpkg를 사용한 Windows용 설치 예제
QML API
모듈의 QML 유형은 qt_add_protobuf 매크로의 QML 및 QML_URI 옵션을 통해 사용할 수 있습니다. 가져오기 이름은 .proto
패키지 이름과 같거나 qt_add_protobuf 매크로의 QML_URI 옵션으로 정의됩니다. 이 유형을 사용하려면 .qml 파일에 다음 import 문을 추가합니다:
import my.proto.package.uri
C++ API
Qt 모듈의 C++ API를 사용하려면 모듈 라이브러리에 직접 또는 다른 종속성을 통해 링크해야 합니다. CMake 및 qmake를 비롯한 여러 빌드 도구가 이를 지원합니다.
CMake로 빌드하기
find_package()
명령을 사용하여 Qt6
패키지에서 필요한 모듈 컴포넌트를 찾습니다:
find_package(Qt6 REQUIRED COMPONENTS Protobuf)
target_link_libraries(mytarget PRIVATE Qt6::Protobuf)
자세한 내용은 CMake로 빌드 개요를 참조하세요.
문서 및 가이드
참조
예제
라이선스 및 속성
Qt Protobuf 모듈은 The Qt Company의 상용 라이센스에 따라 사용할 수 있습니다. 또한 무료 소프트웨어 라이선스에 따라 사용할 수 있습니다: GNU 약소 일반 공중 사용 허가서, 버전 3 또는 GNU 일반 공중 사용 허가서, 버전 2 또는 GNU 일반 공중 사용 허가서, 버전 3. 자세한 내용은 Qt 라이선스를 참조하십시오.
또한, Qt 6.8.2의 qtprotobufgen
도구는 다음과 같은 허용 라이선스에 따라 타사 모듈을 포함할 수 있습니다:
BSD 3항 "신" 또는 "개정" 라이선스 |
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.