Parámetros de CMake para compilar el AWS SDK para C++
Utilice los parámetros de CMake
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++.
Temas
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
-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.7PATH.
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
includeseleccionado. 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
- 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
- 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.7PATH.
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.7PATH.
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-lcAWS-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).
Temas
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.