このページでは

qt_add_openapi_client

指定された OpenAPI 仕様に基づいて HTTP クライアントを生成します。

このコマンドは、Qt6 パッケージのOpenApiTools コンポーネントで定義されています。以下のコマンドでパッケージを読み込みます:

find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)

このコマンドは Qt 6.11 で導入されました。

注:この コマンドはテクノロジープレビュー版であり、今後のリリースで変更される可能性があります。

概要

qt_add_openapi_client(<target>
    SPEC_FILE <file>
    [OUTPUT_DIRECTORY <dir>]
    [ADDITIONAL_PROPERTIES property1=value1 property2=value2 ...]
    [GENERATE_OPTIONS generate_option1 generate_option2 ...]
    [JAVA_OPTIONS jvm_option1 jvm_option2 ...]
    [GENERATE_DOCUMENTATION] # since Qt 6.12
    [DOCUMENTATION_OUTPUT_DIRECTORY <dir>] # since Qt 6.12
    [OUTPUT_PUBLIC_HEADERS_DIR <dir>]
    [OUTPUT_PRIVATE_HEADERS_DIR <dir>]
)

バージョン指定なしのコマンドが無効になっている場合は、代わりに `qt6_add_openapi_client() ` を使用してください。このコマンドと同じ引数セットをサポートしています。

説明

qt_add_openapi_client 関数は、指定された仕様ファイルに対して Qt OpenAPI ジェネレータを呼び出します。その結果、このコマンドはソースファイルのスコープを生成し、それらをターゲットのソースリストに追加します。ターゲットが存在しない場合、生成はエラーメッセージとともに中止されます。ターゲットを作成するには、qt_add_library またはqt_add_executable 関数を呼び出してください。

注: 現在、client によるコード生成のみが サポートされています。

引数

  • SPEC_FILE OpenAPI仕様ファイルを指定します。コード生成には必須です。ファイルの拡張子は*.yaml である必要があります。
  • OUTPUT_DIRECTORY 生成されたコードの出力ディレクトリを指定します。指定がない場合は、CMAKE_CURRENT_BINARY_DIR が使用されます。
  • ADDITIONAL_PROPERTIES generate コマンドの追加設定プロパティを指定します。これらは検証されずに、そのまま OpenAPI Generator に渡されます。
  • GENERATE_OPTIONS generateコマンドに渡される追加のオプションを指定します。

    GENERATE_OPTIONS を通じて渡された-i および--input-spec 引数は無視されます。OpenAPI仕様ファイルは、SPEC_FILE 引数を使用してのみ設定されます。

    GENERATE_OPTIONS を通じて渡された-o および--output 引数は無視されます。出力ディレクトリは、OUTPUT_DIRECTORY 引数によってのみ設定されます。

  • JAVA_OPTIONS OpenAPI Generatorの起動時にJVMに渡される追加オプションを指定します。JVMの動作を設定する際に使用します。オプションは検証されずにそのまま渡されます。
  • GENERATE_DOCUMENTATION (Qt 6.12 以降) 生成されたクラスに対するdoxygen ドキュメントの生成を有効にします。
  • DOCUMENTATION_OUTPUT_DIRECTORY (Qt 6.12 以降) 生成されたクラスのdoxygen ドキュメントを保存するディレクトリを指定します。このオプションは、GENERATE_DOCUMENTATION と組み合わせてのみ使用できます。
  • OUTPUT_PUBLIC_HEADERS_DIR 生成されたパブリックヘッダーの一覧を保存するディレクトリを指定します。指定しない場合は、OUTPUT_DIRECTORY 内にヘッダーが見つかります。
  • OUTPUT_PRIVATE_HEADERS_DIR 生成されたプライベートヘッダーの一覧を保存するディレクトリを指定します。指定しない場合は、ヘッダーはOUTPUT_DIRECTORY 内にあります。

生成動作のカスタマイズ

GENERATE_OPTIONS およびADDITIONAL_PROPERTIES 引数を使用すると、アップストリームの OpenAPI ジェネレータと Qt ジェネレータプラグインの両方の動作をカスタマイズできます。

以下の例は、プロジェクト内でこれら 2 つの引数を組み合わせて使用する方法を示しています:

qt6_add_openapi_client(ClientExample
    SPEC_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/example.yaml
    ADDITIONAL_PROPERTIES
        cppNamespace=ExampleNamespace
        modelNamePrefix=Example
    GENERATE_OPTIONS
        --skip-overwrite
        --api-name-suffix MyApiSuffix
)

ジェネレータ引数の動作およびサポートされる値は、インストールされている OpenAPI Generator のバージョンに依存し、バージョン間で変更される場合があります。

追加の設定プロパティは、次の 2 つの方法で指定できます:

  • ADDITIONAL_PROPERTIES 引数を使用する方法。
  • GENERATE_OPTIONS 引数に-p または--additional-properties を指定する方法。

両方を同時に使用すると、予期しない結果になる可能性があります。いずれか一方のアプローチを選択することをお勧めします。

注:一部の 追加プロパティには、上書きできない固定値が設定されています。これらを上書きしようとすると、指定した値は無視されます。たとえば、packageName という追加プロパティは、関数の<target> パラメータに対応しており、変更することはできません。

JVM の動作のカスタマイズ

次の例は、大規模な仕様ファイルに対してYAMLパーサーの制限を緩和し、JAVA_OPTIONS を使用してログ出力を警告のみに抑える方法を示しています:

qt6_add_openapi_client(ClientExample
    SPEC_FILE
        ${CMAKE_CURRENT_SOURCE_DIR}/example.yaml
    JAVA_OPTIONS
        -DmaxYamlCodePoints=99999999
        -Dlog.level=warn
)

© 2026 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.