qt_add_openapi_client
Génère un client HTTP utilisant une spécification OpenAPI fournie.
La commande est définie dans le composant OpenApiTools du paquetage Qt6. Chargez le paquetage avec :
find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)
Cette commande a été introduite dans Qt 6.11.
Note : Cette commande est en avant-première technologique et peut être modifiée dans les prochaines versions.
Synopsis de la commande
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>] )
Si les commandes sans version sont désactivées, utilisez qt6_add_openapi_client() à la place. Elle prend en charge le même ensemble d'arguments que cette commande.
Description de la commande
La fonction qt_add_openapi_client appelle le générateur Qt OpenAPI pour un fichier de spécification fourni. En conséquence, la commande génère l'étendue des fichiers sources et les ajoute à la liste des sources cibles. Si la cible n'existe pas, la génération sera interrompue avec un message d'erreur. Pour créer la cible, vous pouvez appeler les fonctions qt_add_library ou qt_add_executable.
Note : Seule la génération de code client est actuellement supportée.
Arguments
SPEC_FILEspécifie un fichier de spécification OpenAPI, obligatoire pour la génération de code. Le fichier doit avoir une extension*.yaml.OUTPUT_DIRECTORYspécifie le répertoire de sortie du code généré. S'il n'est pas spécifié,CMAKE_CURRENT_BINARY_DIRest utilisé.ADDITIONAL_PROPERTIESspécifie des propriétés de configuration supplémentaires pour la commande generate. Elles sont transmises telles quelles au générateur OpenAPI sans validation.GENERATE_OPTIONSspécifie des options supplémentaires transmises à la commande generate.Les arguments
-iet--input-specpassés parGENERATE_OPTIONSseront ignorés. Le fichier de spécification OpenAPI est exclusivement défini à l'aide de l'argumentSPEC_FILE.Les arguments
-oet--outputpassés parGENERATE_OPTIONSseront ignorés. Le répertoire de sortie est exclusivement défini à l'aide de l'argumentOUTPUT_DIRECTORY.JAVA_OPTIONSspécifie des options supplémentaires transmises à la JVM lors de l'invocation du générateur OpenAPI. Utilisez cette option pour configurer le comportement de la JVM. Les options sont transmises telles quelles, sans validation.GENERATE_DOCUMENTATIONpermet de générer la documentationdoxygenpour les classes générées.DOCUMENTATION_OUTPUT_DIRECTORYspécifie un répertoire qui stockera la documentationdoxygen. Cette option ne peut être utilisée qu'avecGENERATE_DOCUMENTATION.OUTPUT_PUBLIC_HEADERS_DIRspécifie un répertoire qui stockera la liste des en-têtes publics générés, sinon vous pouvez trouver les en-têtes dans le répertoireOUTPUT_DIRECTORY.OUTPUT_PRIVATE_HEADERS_DIRspécifie un répertoire qui stockera la liste des en-têtes privés générés, sinon vous pouvez trouver les en-têtes dans le répertoireOUTPUT_DIRECTORY.
Personnalisation du comportement de génération
Les arguments GENERATE_OPTIONS et ADDITIONAL_PROPERTIES vous permettent de personnaliser le comportement du générateur OpenAPI en amont et du plugin de génération Qt.
L'exemple ci-dessous montre comment vous pouvez utiliser les deux arguments ensemble dans votre projet :
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
)Le comportement et les valeurs prises en charge par les arguments du générateur dépendent de la version du générateur OpenAPI installée et peuvent changer d'une version à l'autre.
Vous pouvez fournir des propriétés de configuration supplémentaires de deux manières :
- En utilisant l'argument
ADDITIONAL_PROPERTIES. - En passant
-pou--additional-propertiesdans l'argumentGENERATE_OPTIONS.
L'utilisation simultanée des deux méthodes peut conduire à des résultats inattendus. Nous recommandons de choisir une approche.
Remarque : certaines propriétés supplémentaires ont des valeurs fixes qui ne peuvent pas être modifiées. Si vous tentez de les remplacer, vos valeurs seront ignorées. Par exemple, la propriété supplémentaire packageName correspond au paramètre <target> de la fonction et ne peut pas être modifiée.
Personnalisation du comportement de la JVM
L'exemple suivant montre comment augmenter la limite de l'analyseur YAML pour les fichiers de spécification volumineux et réduire la sortie du journal à des avertissements uniquement à l'aide de 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.