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プロジェクトに統合します。

qt_add_protobuf

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.testOUTPUT_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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。