Parámetros de CMake para compilar el AWS SDK para C++ - AWS SDK para C++

Parámetros de CMake para compilar el AWS SDK para C++

Utilice los parámetros de CMake que se enumeran en esta sección para personalizar la compilación de su SDK.

Puede configurar estas opciones con las herramientas GUI de CMake o con la línea de comandos utilizando -D. Por ejemplo:

cmake -DENABLE_UNITY_BUILD=ON -DREGENERATE_CLIENTS=1

Variables y opciones generales de CMake

A continuación se indican las variables y opciones de cmake generales que afectan al proceso de compilación del código fuente del SDK.

nota

Utilice estos parámetros al compilar el código fuente del SDK para el propio SDK para C++.

ADD_CUSTOM_CLIENTS

Crea un cliente de manera arbitraria en función de la definición de la API. Coloque la definición en la carpeta code-generation/api-definitions y, a continuación, transfiera este argumento a cmake. El paso de configuración de cmake genera el cliente y lo incluye como un subdirectorio en la compilación. Esto resulta especialmente útil para generar un cliente C++ para usar uno de los servicios de API Gateway. Por ejemplo:

-DADD_CUSTOM_CLIENTS="serviceName=myCustomService,version=2015-12-21;serviceName=someOtherService,version=2015-08-15"
nota

Para usar el parámetro ADD_CUSTOM_CLIENTS, debe tener Python 2.7, Java (JDK 1.8+) y Maven instalados y en su PATH.

AUTORUN_UNIT_TESTS

Si se establece en ON, ejecute las pruebas unitarias automáticamente después de la compilación.

Valores

ON | OFF

Predeterminado/a

ON

AWS_AUTORUN_LD_LIBRARY_PATH

La ruta que se añadirá a LD_LIBRARY_PATH para las pruebas unitarias que CMake ejecute automáticamente. Establezca esta ruta si se necesitan bibliotecas de tiempo de ejecución personalizadas para las dependencias anuladas.

Valores

cadena.

Predeterminado/a

N/A

AWS_SDK_WARNINGS_ARE_ERRORS

Si se establece en ON, trata las advertencias del compilador como errores. Pruebe a cambiar esta opción a OFF si observa errores en un compilador nuevo o poco común.

Valores

ON | OFF

Predeterminado/a

ON

AWS_USE_CRYPTO_SHARED_LIBS

Obliga a FindCrypto a usar una biblioteca criptográfica compartida si la encuentra. Cámbielo a OFF para usar la configuración de BUILD_SHARED_LIBS en su lugar.

Valores

ON | OFF

Predeterminado/a

OFF

AWS_TEST_REGION

La Región de AWS que se usará en las pruebas de integración.

Valores

cadena.

Predeterminado/a

N/A

BUILD_BENCHMARKS

Si se establece en ON, cree el ejecutable de referencia.

Valores

ON | OFF

Predeterminado/a

OFF

BUILD_DEPS

Si se establece en ON, cree dependencias de terceros.

Valores

ON | OFF

Predeterminado/a

ON

BUILD_ONLY

Cree solo los clientes que quiera usar. Si se configura en un SDK de alto nivel, como aws-cpp-sdk-transfer, BUILD_ONLY resuelve cualquier dependencia de cliente de bajo nivel. También crea pruebas unitarias y de integración relacionadas con los proyectos que seleccione, si existen. Se trata de un argumento de lista, con valores separados por puntos y comas (;). Por ejemplo:

-DBUILD_ONLY="s3;cognito-identity"
nota

El módulo principal del SDK, aws-sdk-cpp-core, siempre se crea, independientemente del valor del parámetro BUILD_ONLY.

BUILD_OPTEL

Si se establece en ON, crea la implementación de OpenTelemetry del rastreo.

Valores

ON | OFF

Predeterminado/a

OFF

BUILD_SHARED_LIBS

Una opción CMake integrada, que se vuelve a exponer aquí para mayor visibilidad. Si se establece en ON, crea bibliotecas compartidas; de lo contrario, solo crea bibliotecas estáticas.

nota

Para la vinculación dinámica con el SDK, debe definir el símbolo USE_IMPORT_EXPORT para todos los objetivos de compilación que utilicen el SDK.

Valores

ON | OFF

Predeterminado/a

ON

BYPASS_DEFAULT_PROXY

Si se establece en ON, omita la configuración de proxy predeterminada de la máquina cuando utilice IXMLHTTPRequest2.

Valores

ON | OFF

Predeterminado/a

ON

CPP_STANDARD

Especifica un estándar de C++ personalizado para usarlo con las bases de código C++ 14 y 17.

Valores

11 | 14 | 17

Predeterminado/a

11

CURL_INCLUDE_DIR

La ruta a curl incluye el directorio que contiene los encabezados libcurl.

Valores

Ruta de la cadena al directorio include seleccionado. Por ejemplo, D:/path/to/dir/with/curl/include.

Predeterminado/a

N/A

CURL_LIBRARY

Ruta al archivo de la biblioteca de curl con el que establecer el enlace. Esta biblioteca puede ser una biblioteca estática o una biblioteca de importación, según las necesidades de la aplicación.

Valores

Ruta de la cadena al archivo de la biblioteca de curl. Por ejemplo, D:/path/to/static/libcur/file/ie/libcurl.lib.a.

Predeterminado/a

N/A

CUSTOM_MEMORY_MANAGEMENT

Para usar un administrador de memoria personalizado, establezca el valor en 1. Puede instalar un asignador personalizado para que todos los tipos de STL utilicen la interfaz de asignación personalizada. Si establece el valor 0, es posible que desee seguir utilizando los tipos de plantilla STL para garantizar la seguridad de las DLL en Windows.

Si el enlace estático se establece en ON, la administración de memoria personalizada se establecerá de forma predeterminada en off (0). Si la vinculación dinámica se establece en ON, la administración de memoria personalizada se establece de forma predeterminada en on (1) y evita la asignación y desasignación entre archivos DLL.

nota

Para evitar errores de discordancia en los enlazadores, debe usar el mismo valor (0 o1) en la totalidad del sistema de compilación.

Para instalar su propio administrador de memoria para que gestione las asignaciones realizadas por el SDK, debe configurar -DCUSTOM_MEMORY_MANAGEMENT y definir USE_AWS_MEMORY_MANAGEMENT para todos los objetivos de compilación que dependan del SDK.

DISABLE_INTERNAL_IMDSV1_CALLS

Si se establece en ON, no se realiza ninguna llamada interna a la API V1 del servicio de metadatos de instancias. Si se establece en OFF, las llamadas de IMDSv2 utilizarán como alternativa IMDSv1 si se produce un error en la llamada de IMDSv2. Para obtener más información sobre IMDSv1 e IMDSv2, consulte Uso del servicio de metadatos de instancia para acceder a los metadatos de instancia en la Guía del usuario de Amazon EC2.

Valores

ON | OFF

Predeterminado/a

OFF

ENABLE_ADDRESS_SANITIZER

Si se establece en ON, activa Address Sanitizer para gcc o clang.

Valores

ON | OFF

Predeterminado/a

OFF

ENABLE_CURL_LOGGING

Si se establece en ON, canaliza el registro interno de curl al registrador del SDK.

Valores

ON | OFF

Predeterminado/a

OFF

ENABLE_HTTP_CLIENT_TESTING

Si se establece en ON, cree y ejecute los conjuntos de pruebas de clientes HTTP correspondientes.

Valores

ON | OFF

Predeterminado/a

OFF

ENABLE_RTTI

Controla si el SDK está diseñado para habilitar la información de tipos en tiempo de ejecución (RTTI).

Valores

ON | OFF

Predeterminado/a

ON

ENABLE_TESTING

Controla si los proyectos de pruebas unitarias y de integración se crean durante la creación del SDK.

Valores

ON | OFF

Predeterminado/a

ON

ENABLE_UNITY_BUILD

Si está establecido en ON, la mayoría de las bibliotecas del SDK se crean como un único archivo .cpp generado. Esto puede reducir de manera considerable el tamaño de la biblioteca estática y acelerar el tiempo de compilación.

Valores

ON | OFF

Predeterminado/a

OFF

ENABLE_VIRTUAL_OPERATIONS

Este parámetro suele funcionar junto con REGENERATE_CLIENTS para generar código.

Si ENABLE_VIRTUAL_OPERATIONS se establece en ON y REGENERATE_CLIENTS en ON, las funciones relacionadas con las operaciones en los clientes de servicio se marcarán como virtual.

Si ENABLE_VIRTUAL_OPERATIONS se establece en OFF y REGENERATE_CLIENTS en ON, virtual no se añadirá a las funciones de operación y las clases de clientes de servicio se marcarán como final.

Si ENABLE_VIRTUAL_OPERATIONS se establece en OFF, el SDK también añadirá los indicadores de compilación -ffunction-sections y -fdata-sections para gcc y clang al compilar.

Para obtener más información, consulte CMake Parameters en GitHub.

Valores

ON | OFF

Predeterminado/a

ON

ENABLE_ZLIB_REQUEST_COMPRESSION

En los servicios que lo admitan, el contenido de la solicitud se comprimirá. Está habilitado de forma predeterminada si la dependencia está disponible.

Valores

ON | OFF

Predeterminado/a

ON

FORCE_CURL

solo Windows. Si se establece en ON, fuerza el uso del cliente curl en lugar del proveedor de transferencia de datos WinHTTP predeterminado.

Valores

ON | OFF

Predeterminado/a

OFF

FORCE_SHARED_CRT

Si se establece en ON, el SDK se vincula al motor de ejecución de C de forma dinámica; de lo contrario, utiliza la configuración BUILD_SHARED_LIBS (que a veces es necesaria para mantener la compatibilidad con versiones anteriores del SDK).

Valores

ON | OFF

Predeterminado/a

ON

G

Genera artefactos de compilación, como soluciones de Visual Studio y proyectos de Xcode.

Por ejemplo, en Windows:

-G "Visual Studio 12 Win64"

Para obtener más información, consulte la documentación de CMake que corresponda a su plataforma de aplicaciones.

MINIMIZE_SIZE

Un superconjunto de ENABLE_UNITY_BUILD. Si se establece en ON, esta opción activa ENABLE_UNITY_BUILD y otros ajustes de reducción de tamaño binario.

Valores

ON | OFF

Predeterminado/a

OFF

NO_ENCRYPTION

Si se establece en ON, impide que la implementación de criptografía predeterminada específica de la plataforma se incorpore a la biblioteca. Establézcala en ON para incluir propia implementación de criptografía.

Valores

ON | OFF

Predeterminado/a

OFF

NO_HTTP_CLIENT

Si se establece en ON, impide que el cliente HTTP predeterminado específico de la plataforma se integre en la biblioteca. Si se establece en ON, tendrá que proporcionar su propia implementación de cliente HTTP específica de la plataforma.

Valores

ON | OFF

Predeterminado/a

OFF

REGENERATE_CLIENTS

Si se establece en ON, este parámetro elimina todo el código generado y genera los directorios de cliente a partir de la carpeta code-generation/api-definitions. Por ejemplo:

-DREGENERATE_CLIENTS=1
nota

Para usar el parámetro REGENERATE_CLIENTS, debe tener Python 2.7, Java (JDK 1.8+) y Maven instalados y en su PATH.

REGENERATE_DEFAULTS

Si se establece en ON, este parámetro elimina todo el código predeterminado generado y lo vuelve a generar a partir de la carpeta code-generation/defaults. Por ejemplo:

-DREGENERATE_DEFAULTS=1
nota

Para usar el parámetro REGENERATE_DEFAULTS, debe tener Python 2.7, Java (JDK 1.8+) y Maven instalados y en su PATH.

SIMPLE_INSTALL

Si se establece en ON, el proceso de instalación no inserta directorios intermedios específicos de la plataforma debajo de bin/ y lib/. Establézcalo en OFF si necesita crear versiones multiplataforma en un único directorio de instalación.

Valores

ON | OFF

Predeterminado/a

ON

TARGET_ARCH

Para realizar una compilación cruzada o una compilación para una plataforma móvil, debe especificar la plataforma de destino. De forma predeterminada, la compilación detecta el sistema operativo del host y compilaciones del sistema operativo detectado.

nota

Cuando TARGET_ARCH es ANDROID, hay opciones adicionales disponibles. Consulte Variables y opciones de CMake para Android.

Valores

WINDOWS | LINUX | APPLE | ANDROID

USE_CRT_HTTP_CLIENT

Si se establece en ON, utilice el cliente HTTP de tiempo de ejecución común, y los sistemas heredados, como WinHTTP y libcurl, no se compilan ni se incluyen.

Valores

ON | OFF

Predeterminado/a

OFF

USE_IXML_HTTP_REQUEST_2

solo Windows. Si se establece en ON, utilice el objeto com de IXMLHTTPRequest2 para la pila HTTP.

Valores

ON | OFF

Predeterminado/a

OFF

USE_OPENSSL

Si se establece en ON, el SDK se compila con OpenSSL; de lo contrario, utiliza awslabs/aws-lc. AWS-LC es una biblioteca criptográfica de uso general de cuyo mantenimiento se encarga el equipo de AWS Cryptography para AWS y sus clientes. Si se establece en OFF, el parámetro instala AWS-LC como reemplazo de OpenSSL en el directorio predeterminado del sistema. No use este parámetro si ya tiene una instalación de OpenSSL en su sistema.

Valores

ON | OFF

Predeterminado/a

ON

USE_TLS_V1_2

Si se establece en ON, el cliente HTTP aplica TLS 1.2.

Valores

ON | OFF

Predeterminado/a

ON

USE_TLS_V1_3

Si se establece en ON, el cliente HTTP aplica TLS 1.3.

Valores

ON | OFF

Predeterminado/a

OFF

Variables y opciones de CMake para Android

Utilice las siguientes variables cuando cree una compilación del SDK para Android (cuando TARGET_ARCH esté configurado en ANDROID).

ANDROID_ABI

Solo Android. Controla la interfaz binaria de aplicaciones (ABI) para la que se generará el código.

nota

Actualmente, no se admiten todos los valores de ABI para Android válidos.

Valores

arm64 | armeabi-v7a | x86_64 | x86 | mips64 | mips

Predeterminado/a

armeabi-v7a

ANDROID_BUILD_CURL

Solo Android. Si se establece en ON, compile también curl.

Valores

ON | OFF

Predeterminado/a

ON

ANDROID_BUILD_OPENSSL

Solo Android. Si se establece en ON, compile también Openssl.

Valores

ON | OFF

Predeterminado/a

ON

ANDROID_BUILD_ZLIB

Solo Android. Si se establece en ON, compile también Zlib.

Valores

ON | OFF

Predeterminado/a

ON

ANDROID_NATIVE_API_LEVEL

Solo Android. Controla el nivel de API en relación con el cual que se compila el SDK. Si configura ANDROID_STL como gnustl, puede elegir cualquier nivel de API. Si usa libc++, debe usar un nivel de API de 21 como mínimo.

Predeterminado/a

Varía según la elección de STL.

ANDROID_STL

Solo Android. Controla la versión de la biblioteca estándar de C++ que utiliza el SDK.

importante

Se pueden producir problemas de rendimiento en el SDK si se utilizan las opciones de gnustl; se recomienda encarecidamente utilizar libc++_shared o libc++_static.

Valores

libc++_shared | libc++_static | gnustl_shared | gnustl_static

Predeterminado/a

libc++_shared

ANDROID_TOOLCHAIN_NAME

Solo Android. Controla qué compilador se usa para compilar el SDK.

nota

Dado que el NDK de Android ha dejado de usar GCC, le recomendamos usar el valor predeterminado.

Predeterminado/a

standalone-clang

DISABLE_ANDROID_STANDALONE_BUILD

Solo Android. De forma predeterminada, las compilaciones de Android utilizan una cadena de herramientas independiente basada en clang creada mediante scripts del NDK. Para usar su propia cadena de herramientas, establezca esta opción en ON.

Valores

ON | OFF

Predeterminado/a

OFF

NDK_DIR

Solo Android. Especifica una ruta de anulación en la que el sistema de compilación debe encontrar el NDK de Android. De forma predeterminada, el sistema de compilación comprueba las variables de entorno (ANDROID_NDK) si esta variable no está configurada.