En esta página

qt_add_openapi_client

Genera un cliente HTTP utilizando una especificación OpenAPI proporcionada.

El comando está definido en el componente OpenApiTools del paquete Qt6. Cargue el paquete con:

find_package(Qt6 REQUIRED COMPONENTS OpenApiTools)

Este comando se introdujo en Qt 6.11.

Nota: Este comando está en fase de previsualización tecnológica y puede cambiar en futuras versiones.

Sinopsis

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 los comandos sin versión están desactivados, utilice qt6_add_openapi_client() en su lugar. Admite el mismo conjunto de argumentos que este comando.

Descripción

La función qt_add_openapi_client llama al generador OpenAPI de Qt para un archivo de especificación proporcionado. Como resultado, el comando genera el ámbito de los archivos fuente y los añade a la lista de fuentes de destino. Si el objetivo no existe, la generación se detendrá con un mensaje de error. Para crear el objetivo puede llamar a las funciones qt_add_library o qt_add_executable.

Nota: Actualmente sólo se soporta la generación de código client.

Argumentos

  • SPEC_FILE especifica un archivo de especificación OpenAPI, obligatorio para la generación de código. El archivo debe tener una extensión *.yaml.
  • OUTPUT_DIRECTORY especifica el directorio de salida para el código generado. Si no se especifica, se utiliza CMAKE_CURRENT_BINARY_DIR.
  • ADDITIONAL_PROPERTIES especifica propiedades de configuración adicionales para el comando generate. Se pasan tal cual al generador OpenAPI sin validación.
  • GENERATE_OPTIONS especifica opciones adicionales que se pasan al comando generate.

    Los argumentos -i y --input-spec pasados a través de GENERATE_OPTIONS serán ignorados. El archivo de especificación OpenAPI se configura exclusivamente mediante el argumento SPEC_FILE.

    Los argumentos -o y --output pasados a través de GENERATE_OPTIONS serán ignorados. El directorio de salida se establece exclusivamente utilizando el argumento OUTPUT_DIRECTORY.

  • JAVA_OPTIONS especifica las opciones adicionales que se pasan a la JVM al invocar el generador OpenAPI. Utilícelo para configurar el comportamiento de la JVM. Las opciones se pasan tal cual sin validación.
  • GENERATE_DOCUMENTATION permite la generación de documentación doxygen para las clases generadas.
  • DOCUMENTATION_OUTPUT_DIRECTORY especifica un directorio que almacenará la documentación doxygen. Esta opción sólo puede utilizarse junto con GENERATE_DOCUMENTATION.
  • OUTPUT_PUBLIC_HEADERS_DIR especifica un directorio que almacenará la lista de cabeceras públicas generadas, de lo contrario puede encontrar las cabeceras en OUTPUT_DIRECTORY.
  • OUTPUT_PRIVATE_HEADERS_DIR especifica un directorio que almacenará la lista de cabeceras privadas generadas, de lo contrario puede encontrar las cabeceras en OUTPUT_DIRECTORY.

Personalización del comportamiento de generación

Los argumentos GENERATE_OPTIONS y ADDITIONAL_PROPERTIES permiten personalizar el comportamiento tanto del generador OpenAPI como del plugin generador Qt.

El siguiente ejemplo muestra cómo puede utilizar ambos argumentos juntos en su proyecto:

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
)

El comportamiento y los valores admitidos de los argumentos del generador dependen de la versión instalada del generador OpenAPI y pueden cambiar entre versiones.

Puede proporcionar propiedades de configuración adicionales de dos maneras:

  • Utilizando el argumento ADDITIONAL_PROPERTIES.
  • Pasando -p o --additional-properties en el argumento GENERATE_OPTIONS.

El uso simultáneo de ambos métodos puede dar lugar a resultados inesperados. Le recomendamos que elija uno de los dos métodos.

Nota: Algunas propiedades adicionales tienen valores fijos que no pueden anularse. Si intenta anularlas, sus valores serán ignorados. Por ejemplo, la propiedad adicional packageName corresponde al parámetro <target> de la función y no puede modificarse.

Personalizar el comportamiento de la JVM

El siguiente ejemplo muestra cómo aumentar el límite del analizador sintáctico YAML para archivos de especificación grandes y reducir la salida de registro a advertencias únicamente utilizando 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.