qtprotobufgen ツール
qtprotobufgen
ツールを使用して、protobuf スキーマから Qt Protobuf クラスを生成できます。このツールはCMakeQt6::ProtobufTools
パッケージで提供されています。Googleのprotoc
ツールの拡張として動作します。
find_package(Qt6 COMPONENTS ProtobufTools REQUIRED)
使用方法
Qtは、qtprotobufgen
ツールの使用を容易にするCMake関数を提供しています。CMakeをビルドツールとして使用する場合は、Qt CMake APIを使用することを推奨します。CMake以外のビルドシステムを使用する場合は、「手動で実行する」で説明されているコマンドを使用してください。
注意: Qt GRPC モジュールを使用した gRPC および Protobuf アプリケーションをqmake でビルドするための明確なサポートはありません。
CMake
以下のCMakeコマンドは、protobufスキーマをQtプロジェクトに統合します。
protobuf スキーマを使用して Qt ベースの C++ ソースコードを生成します。 |
通常、qtprotobufgen
は、qt_add_protobuf
マクロを使用して CMake から呼び出されます。
qt_add_protobuf を使う
cmake_minimum_required(VERSION 3.16...3.22) project(MyThings) find_package(Qt6 REQUIRED COMPONENTS Protobuf) qt_standard_project_setup() qt_add_protobuf(MyMessages GENERATE_PACKAGE_SUBFOLDERS PROTO_FILES path/to/message.proto path/to/other_message.proto PROTO_INCLUDES /path/to/proto/include ) qt_add_executable(MyApp main.cpp) target_link_libraries(MyApp PRIVATE MyMessages)
上の例では、PROTO_FILES
オプションに渡されたパスで定義されたメッセージタイプを含むMyMessages
というライブラリを生成しています。GENERATE_PACKAGE_SUBFOLDERS
オプションは、生成されたファイルのフォルダ構造を生成します。また、PROTO_INCLUDES
オプションは、指定されたディレクトリで依存関係やインポートを探すように protoc に指示します。MyApp
という実行可能ファイルのターゲットを作成し、MyMessages
ライブラリにリンクします。
手動での実行
protoc --plugin=protoc-gen-qtprotobuf=<path/to/bin/>qtprotobufgen \ --qtprotobuf_out="[<options>:]<output_dir>" \ [--qtprotobuf_opt="<options>"] \ [-I/extra/proto/include/path] \ <protofile>.proto
options
引数はセミコロンで区切られたオプションのリストである。これは2通りの方法で渡すことができる。コロンで区切られたoutput_dir引数のオプションの前に付ける方法。または、別の引数--qtprotobuf_opt
。また、対応するキーをQT_PROTOBUF_OPTIONS
環境変数として渡すこともできる。キーはセミコロンで区切られたリストで指定する必要がある:
export QT_PROTOBUF_OPTIONS="COPY_COMMENTS;GENERATE_PACKAGE_SUBFOLDERS"
オプション
ジェネレータは、生成を調整するためのオプションをサポートしています。オプションはqt_add_protobuf関数に直接エイリアスを持っています。以下のオプションがサポートされています:
COPY_COMMENTS
.proto
ファイルのコメントを生成コードにコピーします。GENERATE_PACKAGE_SUBFOLDERS
生成されるファイルのフォルダ構造を作成するために、 ファイルからパッケージ名指定子を使用します。たとえば、パッケージがと定義されている場合、生成されたファイルは.proto
package io.qt.test
OUTPUT_DIRECTORY/io/qt/test/ に置かれます。EXPORT_MACRO
は、生成されるコードで使用されるエクスポート・マクロのベース名を定義します。最終的なマクロ名は のように構築される。このオプションが設定されていない場合、エクスポートマクロは生成されません。QPB_<EXPORT_MACRO>_EXPORT
Qt 6.8 以降では、以下の形式がサポートされています:
EXPORT_MACRO=macro_name[:macro_output_file[:<true|false>]]
.このフォーマットでは、エクスポート・マクロを含むヘッダー・ファイルの名前を指定し、それが生成されるかどうかを明示的に制御することができます。注意: <macro_output_file>が指定されていない場合、オプションのデフォルトは以前の構文になります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。