Auf dieser Seite

qt_add_openapi_client

Erzeugt einen HTTP-Client anhand einer bereitgestellten OpenAPI-Spezifikation.

Der Befehl ist in der Komponente „ OpenApiTools “ des Pakets „ Qt6 “ definiert. Laden Sie das Paket mit folgendem Befehl:

find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)

Dieser Befehl wurde in Qt 6.11 eingeführt.

Hinweis: Dieser Befehl befindet sich in der Technologievorschau und kann sich in zukünftigen Versionen ändern.

Syntax

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>]
)

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen „ qt6_add_openapi_client() “. Dieser Befehl unterstützt dieselben Argumente wie der vorliegende Befehl.

Beschreibung

Die Funktion „ qt_add_openapi_client “ ruft den Qt-OpenAPI-Generator für eine angegebene Spezifikationsdatei auf. Als Ergebnis generiert der Befehl den Umfang der Quelldateien und fügt diese der Quellliste des Ziels hinzu. Falls das Ziel nicht existiert, wird die Generierung mit einer Fehlermeldung abgebrochen. Zum Erstellen des Ziels können Sie die Funktionen „ qt_add_library “ oder „ qt_add_executable “ aufrufen.

Hinweis: Derzeit wirdnur die Codegenerierung für „ client “ unterstützt.

Argumente

  • SPEC_FILE Gibt eine OpenAPI-Spezifikationsdatei an, die für die Codegenerierung erforderlich ist. Die Datei sollte die Erweiterung „ *.yaml “ haben.
  • OUTPUT_DIRECTORY Gibt das Ausgabeverzeichnis für den generierten Code an. Wird nichts angegeben, wird „ CMAKE_CURRENT_BINARY_DIR “ verwendet.
  • ADDITIONAL_PROPERTIES Gibt zusätzliche Konfigurationseigenschaften für den Befehl „generate“ an. Diese werden unverändert und ohne Validierung an den OpenAPI-Generator übergeben.
  • GENERATE_OPTIONS Gibt zusätzliche Optionen an, die an den Befehl „generate“ übergeben werden.

    Die über „ GENERATE_OPTIONS “ übergebenen Argumente „ -i “ und „ --input-spec “ werden ignoriert. Die OpenAPI-Spezifikationsdatei wird ausschließlich über das Argument „ SPEC_FILE “ festgelegt.

    Die über „ GENERATE_OPTIONS “ übergebenen Argumente „ -o “ und „ --output “ werden ignoriert. Das Ausgabeverzeichnis wird ausschließlich über das Argument „ OUTPUT_DIRECTORY “ festgelegt.

  • JAVA_OPTIONS Gibt zusätzliche Optionen an, die beim Aufruf des OpenAPI-Generators an die JVM übergeben werden. Verwenden Sie dies, um das Verhalten der JVM zu konfigurieren. Die Optionen werden unverändert und ohne Validierung übergeben.
  • GENERATE_DOCUMENTATION (seit Qt 6.12) aktiviert die Generierung von doxygen -Dokumentation für generierte Klassen.
  • DOCUMENTATION_OUTPUT_DIRECTORY (seit Qt 6.12) gibt ein Verzeichnis an, in dem die „ doxygen “-Dokumentation gespeichert wird. Die Option kann nur in Verbindung mit „ GENERATE_DOCUMENTATION “ verwendet werden.
  • OUTPUT_PUBLIC_HEADERS_DIR Legt ein Verzeichnis fest, in dem die Liste der generierten öffentlichen Header gespeichert wird; andernfalls befinden sich die Header im Verzeichnis „ OUTPUT_DIRECTORY “.
  • OUTPUT_PRIVATE_HEADERS_DIR Legt ein Verzeichnis fest, in dem die Liste der generierten privaten Header gespeichert wird; andernfalls befinden sich die Header im Verzeichnis „ OUTPUT_DIRECTORY “.

Anpassen des Generierungsverhaltens

Mit den Argumenten „ GENERATE_OPTIONS “ und „ ADDITIONAL_PROPERTIES “ können Sie das Verhalten sowohl des Upstream-OpenAPI-Generators als auch des Qt-Generator-Plugins anpassen.

Das folgende Beispiel zeigt, wie Sie beide Argumente gemeinsam in Ihrem Projekt verwenden können:

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
)

Das Verhalten und die unterstützten Werte der Generator-Argumente hängen von der installierten OpenAPI-Generator-Version ab und können sich von Version zu Version ändern.

Sie können zusätzliche Konfigurationseigenschaften auf zwei Arten angeben:

  • Mithilfe des Arguments „ ADDITIONAL_PROPERTIES “.
  • Durch Übergabe von „ -p “ oder „ --additional-properties “ im Argument „ GENERATE_OPTIONS “.

Die gleichzeitige Verwendung beider Methoden kann zu unerwarteten Ergebnissen führen. Wir empfehlen, sich für einen der beiden Ansätze zu entscheiden.

Hinweis: Einige zusätzliche Eigenschaften haben feste Werte, die nicht überschrieben werden können. Wenn Sie versuchen, diese zu überschreiben, werden Ihre Werte ignoriert. Beispielsweise entspricht die zusätzliche Eigenschaft „ packageName “ dem Parameter „ <target> “ der Funktion und kann nicht geändert werden.

Anpassen des JVM-Verhaltens

Das folgende Beispiel zeigt, wie Sie das Limit des YAML-Parsers für große Spezifikationsdateien erhöhen und die Protokollausgabe mithilfe von ` JAVA_OPTIONS` auf Warnungen beschränken können:

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.