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_FILEGibt eine OpenAPI-Spezifikationsdatei an, die für die Codegenerierung erforderlich ist. Die Datei sollte die Erweiterung „*.yaml“ haben.OUTPUT_DIRECTORYGibt das Ausgabeverzeichnis für den generierten Code an. Wird nichts angegeben, wird „CMAKE_CURRENT_BINARY_DIR“ verwendet.ADDITIONAL_PROPERTIESGibt zusätzliche Konfigurationseigenschaften für den Befehl „generate“ an. Diese werden unverändert und ohne Validierung an den OpenAPI-Generator übergeben.GENERATE_OPTIONSGibt 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_OPTIONSGibt 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 vondoxygen-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_DIRLegt 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_DIRLegt 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.