Auf dieser Seite

qt_add_openapi_client

Erzeugt einen HTTP-Client unter Verwendung einer bereitgestellten OpenAPI-Spezifikation.

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

find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)

Dieser Befehl wurde in Qt 6.11 eingeführt.

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

Synopsis

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]
    [DOCUMENTATION_OUTPUT_DIRECTORY <dir>]
    [OUTPUT_PUBLIC_HEADERS_DIR <dir>]
    [OUTPUT_PRIVATE_HEADERS_DIR <dir>]
)

Wenn versionslose Befehle deaktiviert sind, verwenden Sie stattdessen qt6_add_openapi_client(). Er unterstützt die gleichen Argumente wie dieser 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 Bereich der Quelldateien und fügt sie der Liste der Zielquellen hinzu. Existiert das Ziel nicht, wird die Generierung mit einer Fehlermeldung abgebrochen. Zur Erstellung des Ziels können Sie die Funktionen qt_add_library oder qt_add_executable aufrufen.

Hinweis: Derzeit wird nur die Codegenerierung von client unterstützt.

Argumente

  • SPEC_FILE gibt eine OpenAPI-Spezifikationsdatei an, die für die Codegenerierung zwingend erforderlich ist. Die Datei sollte eine *.yaml Erweiterung haben.
  • OUTPUT_DIRECTORY spezifiziert das Ausgabeverzeichnis für den generierten Code. Wenn nicht angegeben, wird CMAKE_CURRENT_BINARY_DIR verwendet.
  • ADDITIONAL_PROPERTIES spezifiziert zusätzliche Konfigurationseigenschaften für den generate-Befehl. Sie werden ohne Überprüfung an den OpenAPI Generator weitergegeben.
  • GENERATE_OPTIONS gibt zusätzliche Optionen an, die an den Generierungsbefehl übergeben werden.

    Die Argumente -i und --input-spec, die über GENERATE_OPTIONS übergeben werden, werden ignoriert. Die OpenAPI-Spezifikationsdatei wird ausschließlich mit dem Argument SPEC_FILE festgelegt.

    Die Argumente -o und --output, die über GENERATE_OPTIONS übergeben werden, werden ignoriert. Das Ausgabeverzeichnis wird ausschließlich über das Argument OUTPUT_DIRECTORY festgelegt.

  • JAVA_OPTIONS spezifiziert zusätzliche Optionen, die an die JVM übergeben werden, wenn der OpenAPI-Generator aufgerufen wird. Verwenden Sie dies, um das Verhalten der JVM zu konfigurieren. Die Optionen werden ohne Validierung übergeben.
  • GENERATE_DOCUMENTATION ermöglicht die Generierung von doxygen Dokumentation für generierte Klassen.
  • DOCUMENTATION_OUTPUT_DIRECTORY spezifiziert ein Verzeichnis, in dem die doxygen Dokumentation gespeichert wird. Die Option kann nur zusammen mit GENERATE_DOCUMENTATION verwendet werden.
  • OUTPUT_PUBLIC_HEADERS_DIR gibt ein Verzeichnis an, in dem die Liste der generierten öffentlichen Kopfzeilen gespeichert wird, andernfalls können Sie die Kopfzeilen in OUTPUT_DIRECTORY finden.
  • OUTPUT_PRIVATE_HEADERS_DIR gibt ein Verzeichnis an, in dem die Liste der generierten privaten Header gespeichert wird; andernfalls finden Sie die Header im Verzeichnis OUTPUT_DIRECTORY.

Anpassen des Generierungsverhaltens

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

Das folgende Beispiel zeigt, wie Sie beide Argumente zusammen 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 zwischen den Versionen ändern.

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

  • Verwendung des Arguments ADDITIONAL_PROPERTIES.
  • Übergabe von -p oder --additional-properties im Argument GENERATE_OPTIONS.

Die gleichzeitige Verwendung beider Möglichkeiten kann zu unerwarteten Ergebnissen führen. Wir empfehlen, einen Ansatz zu wählen.

Hinweis: Einige zusätzliche Eigenschaften haben feste Werte, die nicht außer Kraft gesetzt werden können. Wenn Sie versuchen, sie zu überschreiben, werden Ihre Werte ignoriert. Die zusätzliche Eigenschaft packageName entspricht beispielsweise dem Parameter <target> der Funktion und kann nicht geändert werden.

Anpassen des JVM-Verhaltens

Das folgende Beispiel zeigt, wie Sie mit JAVA_OPTIONS das YAML-Parserlimit für große Spezifikationsdateien erhöhen und die Protokollausgabe 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.