Sur cette page

qt_add_openapi_client

Génère un client HTTP à partir d'une spécification OpenAPI fournie.

La commande est définie dans le composant « OpenApiTools » du paquet « Qt6 ». Chargez le paquet à l'aide de la commande suivante :

find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)

Cette commande a été introduite dans Qt 6.11.

Remarque : cette commande est en avant-première technologique et est susceptible d'évoluer dans les prochaines versions.

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] # since Qt 6.12
    [DOCUMENTATION_OUTPUT_DIRECTORY <dir>] # since Qt 6.12
    [OUTPUT_PUBLIC_HEADERS_DIR <dir>]
    [OUTPUT_PRIVATE_HEADERS_DIR <dir>]
)

Si les commandes sans version sont désactivées, utilisez plutôt qt6_add_openapi_client(). Elle prend en charge le même ensemble d’arguments que cette commande.

Description

La fonction ` qt_add_openapi_client ` appelle le générateur Qt OpenAPI pour un fichier de spécification fourni. La commande génère ainsi les fichiers source correspondants et les ajoute à la liste des sources de la cible. Si la cible n'existe pas, la génération s'arrête et un message d'erreur s'affiche. Pour créer la cible, vous pouvez appeler les fonctions ` qt_add_library ` ou ` qt_add_executable `.

Remarque : seule la génération de code « client » est actuellement prise en charge.

Arguments

  • SPEC_FILE spécifie un fichier de spécification OpenAPI, obligatoire pour la génération de code. Le fichier doit porter l’extension *.yaml.
  • OUTPUT_DIRECTORY Spécifie le répertoire de sortie du code généré. S'il n'est pas spécifié, le répertoire CMAKE_CURRENT_BINARY_DIR est utilisé.
  • ADDITIONAL_PROPERTIES spécifie des propriétés de configuration supplémentaires pour la commande generate. Elles sont transmises telles quelles à OpenAPI Generator sans validation.
  • GENERATE_OPTIONS Spécifie des options supplémentaires transmises à la commande « generate ».

    Les arguments -i et --input-spec transmis via GENERATE_OPTIONS seront ignorés. Le fichier de spécification OpenAPI est défini exclusivement à l’aide de l’argument SPEC_FILE.

    Les arguments -o et --output transmis via GENERATE_OPTIONS seront ignorés. Le répertoire de sortie est défini exclusivement à l’aide de l’argument OUTPUT_DIRECTORY.

  • JAVA_OPTIONS Spécifie les options supplémentaires transmises à la JVM lors de l’appel de l’OpenAPI Generator. Utilisez cette option pour configurer le comportement de la JVM. Les options sont transmises telles quelles, sans validation.
  • GENERATE_DOCUMENTATION (depuis Qt 6.12) active la génération de la documentation doxygen pour les classes générées.
  • DOCUMENTATION_OUTPUT_DIRECTORY (depuis Qt 6.12) spécifie un répertoire dans lequel sera stockée la documentation « doxygen ». Cette option ne peut être utilisée qu’en association avec « GENERATE_DOCUMENTATION ».
  • OUTPUT_PUBLIC_HEADERS_DIR Spécifie un répertoire dans lequel sera stockée la liste des en-têtes publics générés ; sinon, vous trouverez ces en-têtes dans le fichier ` OUTPUT_DIRECTORY`.
  • OUTPUT_PRIVATE_HEADERS_DIR Spécifie un répertoire dans lequel sera stockée la liste des en-têtes privés générés ; sinon, ces en-têtes se trouvent dans le répertoire « OUTPUT_DIRECTORY ».

Personnalisation du comportement de génération

Les arguments GENERATE_OPTIONS et ADDITIONAL_PROPERTIES vous permettent de personnaliser le comportement à la fois du générateur OpenAPI en amont et du plugin de génération Qt.

L'exemple ci-dessous montre comment utiliser ces deux arguments conjointement 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 installée d’OpenAPI Generator et peuvent varier 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 -p ou --additional-properties dans l’argument GENERATE_OPTIONS.

L'utilisation simultanée de ces deux méthodes peut entraîner des résultats inattendus. Nous vous recommandons de choisir une seule approche.

Remarque : certaines propriétés supplémentaires ont des valeurs fixes qui ne peuvent pas être remplacé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 du parseur YAML pour les fichiers de spécification volumineux et réduire la sortie du journal aux seuls avertissements à 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.