Parâmetros do CMake para compilar o AWS SDK para C++ - AWS SDK para C++

Parâmetros do CMake para compilar o AWS SDK para C++

Use os parâmetros do CMake listados nesta seção para personalizar a compilação do SDK.

É possível definir essas opções com as ferramentas da GUI do CMake ou a linha de comandos usando -D. Por exemplo:

cmake -DENABLE_UNITY_BUILD=ON -DREGENERATE_CLIENTS=1

Variáveis e opções gerais do CMake

Veja a seguir as variáveis e opções gerais do cmake que afetam o processo de compilação do código-fonte do SDK.

nota

Use esses parâmetros ao compilar o código-fonte do SDK para o próprio SDK para C++.

ADD_CUSTOM_CLIENTS

Cria qualquer cliente arbitrário com base na definição da API. Coloque sua definição na pasta code-generation/api-definitions e, depois, transmita esse argumento para cmake. A etapa de cmake gera seu cliente e o inclui como um subdiretório em sua compilação. Isso é particularmente útil para gerar um cliente C++ para usar um dos seus serviços do API Gateway. Por exemplo:

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

Para usar o parâmetro ADD_CUSTOM_CLIENTS, você deve ter o Python 2.7, o Java (JDK 1.8+) e o Maven instalados e em seu PATH.

AUTORUN_UNIT_TESTS

Se ON, execute testes de unidade automaticamente após a compilação.

Valores

Ativado | Desativado

Padrão

ON

AWS_AUTORUN_LD_LIBRARY_PATH

O caminho a ser anexado ao LD_LIBRARY_PATH para testes de unidade executados automaticamente pelo CMake. Defina esse caminho se bibliotecas de runtime personalizadas forem necessárias para dependências substituídas.

Valores

String.

Padrão

N/D

AWS_SDK_WARNINGS_ARE_ERRORS

Se ON, trate os avisos do compilador como erros. Tente ativar isso OFF se observar erros em um compilador novo ou incomum.

Valores

Ativado | Desativado

Padrão

ON

AWS_USE_CRYPTO_SHARED_LIBS

Força o FindCrypto a usar uma biblioteca de criptografia compartilhada, se encontrada. Defina isso como OFF para usar a configuração BUILD_SHARED_LIBS.

Valores

Ativado | Desativado

Padrão

DESL

AWS_TEST_REGION

A Região da AWS a ser usada para testes de integração.

Valores

String.

Padrão

N/D

BUILD_BENCHMARKS

Se ON, compile o executável de ponto de referência.

Valores

Ativado | Desativado

Padrão

DESL

BUILD_DEPS

Se ON, compile as dependências de terceiros.

Valores

Ativado | Desativado

Padrão

ON

BUILD_ONLY

Compila somente os clientes que você deseja usar. Se definido como um SDK de alto nível, como aws-cpp-sdk-transfer, BUILD_ONLY, resolve todas as dependências de cliente de baixo nível. Ele também compila integração e de testes de unidade relacionados aos projetos selecionados, se existirem. Esse é um argumento de lista, com valores separados por caracteres ponto-e-vírgula (;). Por exemplo:

-DBUILD_ONLY="s3;cognito-identity"
nota

O módulo principal do SDK, aws-sdk-cpp-core, é sempre compilado, independentemente do valor do parâmetro BUILD_ONLY.

BUILD_OPTEL

Se ON, compila a implementação de telemetria aberta do rastreamento.

Valores

Ativado | Desativado

Padrão

DESL

BUILD_SHARED_LIBS

Uma opção CMake integrada, exposta novamente aqui para maior visibilidade. Se ON, ele compila bibliotecas compartilhadas; caso contrário, ele cria somente bibliotecas estáticas.

nota

Para se vincular dinamicamente ao SDK, você deve definir o símbolo USE_IMPORT_EXPORT para todos os destinos de compilação usando o SDK.

Valores

Ativado | Desativado

Padrão

ON

BYPASS_DEFAULT_PROXY

Se ON, ignore as configurações de proxy padrão da máquina ao usar IXmlHttpRequest2.

Valores

Ativado | Desativado

Padrão

ON

CPP_STANDARD

Especifica um padrão C++ personalizado para uso com bases de código C++ 14 e 17.

Valores

11 | 14 | 17

Padrão

11

CURL_INCLUDE_DIR

O caminho para curl inclui um diretório que contém cabeçalhoslibcurl.

Valores

Caminho da string do diretório include selecionado. Por exemplo, D:/path/to/dir/with/curl/include.

Padrão

N/D

CURL_LIBRARY

Caminho do arquivo da biblioteca curl a ser vinculado. Essa biblioteca pode ser estática ou de importação, dependendo das necessidades da sua aplicação.

Valores

Caminho da string do arquivo da biblioteca curl. Por exemplo, D:/path/to/static/libcur/file/ie/libcurl.lib.a.

Padrão

N/D

CUSTOM_MEMORY_MANAGEMENT

Para usar um gerenciador de memória personalizado, defina o valor como 1. Você pode instalar um alocador personalizado para que todos os tipos de STL usem a interface de alocação personalizada. Se você definir o valor como 0, talvez seja conveniente usar os tipos de modelo STL para ajudar na segurança de DLL no Windows.

Se a vinculação estática for ON, o gerenciamento de memória personalizado assumirá como padrão desativado (0). Se a vinculação dinâmica for ON, o gerenciamento de memória personalizado usará como padrão ativado (1) e evitará a alocação e desalocação entre DLLs.

nota

Para evitar erros de incompatibilidade do vinculador, você deve usar o mesmo valor (0 ou 1) em todo o sistema de compilação.

Para instalar seu próprio gerenciador de memória para lidar com as alocações feitas pelo SDK, você deve definir -DCUSTOM_MEMORY_MANAGEMENT e USE_AWS_MEMORY_MANAGEMENT para todos os destinos de compilação que dependem do SDK.

DISABLE_INTERNAL_IMDSV1_CALLS

Se ON, nenhuma chamada interna será feita para a API V1 do Serviço de metadados da instância. Se OFF, as chamadas do IMDSv2 voltarão a usar o IMDSv1 se a chamada do IMDSv2 falhar. Para acessar mais informações sobre IMDSv1 e IMDSv2, consulte Use o serviço de metadados de instância para acessar metadados de instância no Guia do usuário do Amazon EC2.

Valores

Ativado | Desativado

Padrão

DESL

ENABLE_ADDRESS_SANITIZER

Se ON, ativará o Address Sanitizer para gcc ou clang.

Valores

Ativado | Desativado

Padrão

DESL

ENABLE_CURL_LOGGING

Se ON, direcione o log interno para curl para o registrador do SDK.

Valores

Ativado | Desativado

Padrão

DESL

ENABLE_HTTP_CLIENT_TESTING

Se ON, compile e execute os conjuntos de testes de clientes HTTP correspondentes.

Valores

Ativado | Desativado

Padrão

DESL

ENABLE_RTTI

Controla se o SDK foi compilado para habilitar informações de tipo de runtime (RTTI).

Valores

Ativado | Desativado

Padrão

ON

ENABLE_TESTING

Controla se os projetos de teste de unidade e integração são compilados durante a compilação do SDK.

Valores

Ativado | Desativado

Padrão

ON

ENABLE_UNITY_BUILD

Se ON, a maioria das bibliotecas do SDK será compilada como um único arquivo .cpp gerado. Isso pode reduzir significativamente o tamanho da biblioteca estática e acelerar o tempo de compilação.

Valores

Ativado | Desativado

Padrão

DESL

ENABLE_VIRTUAL_OPERATIONS

Esse parâmetro geralmente funciona em conjunto com REGENERATE_CLIENTS para geração de código.

Se ENABLE_VIRTUAL_OPERATIONS for ON e REGENERATE_CLIENTS for ON, as funções relacionadas à operação em clientes de serviço serão marcadas como virtual.

Se ENABLE_VIRTUAL_OPERATIONS for OFF e REGENERATE_CLIENTS for ON, virtual não será adicionado às funções de operação e as classes do cliente de serviço serão marcadas como final.

Se ENABLE_VIRTUAL_OPERATIONS estiver OFF, o SDK também adicionará sinalizadores de compilador -ffunction-sections e -fdata-sections para gcc e clang durante a compilação.

Para acessar mais informações, consulte Parâmetros do CMake no GitHub.

Valores

Ativado | Desativado

Padrão

ON

ENABLE_ZLIB_REQUEST_COMPRESSION

Para serviços que o comportam, o conteúdo da solicitação será compactado. Ativado por padrão se a dependência estiver disponível.

Valores

Ativado | Desativado

Padrão

ON

FORCE_CURL

Somente para Windows. Se ON, forçará o uso do cliente curl em vez do provedor de transferência de dados WinHTTP padrão.

Valores

Ativado | Desativado

Padrão

DESL

FORCE_SHARED_CRT

Se ON, o SDK se vinculará dinamicamente ao runtime C; caso contrário, ele usará a configuração BUILD_SHARED_LIBS (às vezes necessária para compatibilidade com versões anteriores do SDK).

Valores

Ativado | Desativado

Padrão

ON

G

Gera artefatos de compilação, como soluções do Visual Studio e projetos do Xcode.

Por exemplo, no Windows:

-G "Visual Studio 12 Win64"

Para acessar mais informações, consulte a documentação do CMake para sua plataforma.

MINIMIZE_SIZE

Um superconjunto de ENABLE_UNITY_BUILD. Se ON, essa opção ativará ENABLE_UNITY_BUILD e configurações adicionais de redução de tamanho binário.

Valores

Ativado | Desativado

Padrão

DESL

NO_ENCRYPTION

Se ON, impedirá que a implementação de criptografia específica da plataforma padrão seja incorporada à biblioteca. Defina como Ativado para injetar sua própria implementação de criptografia.

Valores

Ativado | Desativado

Padrão

DESL

NO_HTTP_CLIENT

Se ON, impedirá que o cliente HTTP específico da plataforma padrão seja incorporado à biblioteca. Se estiver Ativado, você precisará fornecer sua própria implementação do cliente HTTP específico da plataforma.

Valores

Ativado | Desativado

Padrão

DESL

REGENERATE_CLIENTS

Se ON, esse parâmetro excluirá todo o código gerado e gerará os diretórios do cliente a partir da pasta code-generation/api-definitions. Por exemplo:

-DREGENERATE_CLIENTS=1
nota

Para usar o parâmetro REGENERATE_CLIENTS, você deve ter o Python 2.7, o Java (JDK 1.8+) e o Maven instalados e em seu PATH.

REGENERATE_DEFAULTS

Se ON, esse parâmetro excluirá todo o código padrão gerado e os gerará novamente a partir da pasta code-generation/defaults. Por exemplo:

-DREGENERATE_DEFAULTS=1
nota

Para usar o parâmetro REGENERATE_DEFAULTS, você deve ter o Python 2.7, o Java (JDK 1.8+) e o Maven instalados e em seu PATH.

SIMPLE_INSTALL

Se ON, o processo de instalação não vai inserir diretórios intermediários específicos da plataforma abaixo de bin/ e lib/. Ative OFF se precisar fazer lançamentos multiplataforma em um único diretório de instalação.

Valores

Ativado | Desativado

Padrão

ON

TARGET_ARCH

Para compilar ou criar para uma plataforma móvel, você deve especificar a plataforma de destino. Por padrão, a compilação detecta o sistema operacional host e realiza a compilação para o sistema operacional detectado.

nota

Quando TARGET_ARCH é ANDROID, opções adicionais estão disponíveis. Consulte Variáveis e opções do CMake para Android.

Valores

WINDOWS | LINUX | APPLE | ANDROID

USE_CRT_HTTP_CLIENT

SeON, use o cliente HTTP de runtime comum, e os sistemas legados, como WinHttp e libcurl, não serão compilados nem incluídos.

Valores

Ativado | Desativado

Padrão

DESL

USE_IXML_HTTP_REQUEST_2

Somente para Windows. Se ON, use o objeto COM IXmlHttpRequest2 para a pilha HTTP.

Valores

Ativado | Desativado

Padrão

DESL

USE_OPENSSL

Se ON, o SDK será compilado usando OpenSSL; caso contrário, ele usará awslabs/aws-lc. AWS-LC é uma biblioteca criptográfica de uso geral mantida pela equipe de criptografia da AWS para a AWS e seus clientes. A ativação do parâmetro OFF instala o AWS-LC como substituição do OpenSSL no diretório padrão do sistema. Não use se você já tiver uma instalação do OpenSSL em seu sistema.

Valores

Ativado | Desativado

Padrão

ON

USE_TLS_V1_2

Se ON, o cliente HTTP vai impor o TLS 1.2.

Valores

Ativado | Desativado

Padrão

ON

USE_TLS_V1_3

Se ON, o cliente HTTP vai impor o TLS 1.3.

Valores

Ativado | Desativado

Padrão

DESL

Variáveis e opções do CMake para Android.

Use as variáveis a seguir ao criar uma compilação para Android do SDK (quando TARGET_ARCH estiver definido como ANDROID).

ANDROID_ABI

Somente para Android. Controla para qual interface binária de aplicativo (ABI) gerar o código.

nota

No momento, nem todos os valores válidos da ABI do Android são aceitos.

Valores

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

Padrão

armeabi-v7a

ANDROID_BUILD_CURL

Somente para Android. Se ON, copile o curl também.

Valores

Ativado | Desativado

Padrão

ON

ANDROID_BUILD_OPENSSL

Somente para Android. Se ON, compile o Openssl também.

Valores

Ativado | Desativado

Padrão

ON

ANDROID_BUILD_ZLIB

Somente para Android. Se ON, compile o Zlib também.

Valores

Ativado | Desativado

Padrão

ON

ANDROID_NATIVE_API_LEVEL

Somente para Android. Controla em qual nível de API o SDK se baseia. Se você definir ANDROID_STL como gnustl, poderá escolher qualquer nível de API. Se você usar libc++, deverá utilizar um nível de API de pelo menos 21.

Padrão

Varia de acordo com a opção de STL.

ANDROID_STL

Somente para Android. Controla qual tipo da biblioteca padrão C++ o SDK usa.

Importante

Problemas de desempenho poderão ocorrer no SDK se as opções gnustl forem usadas; é altamente recomendável usar libc++_shared ou libc++_static.

Valores

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

Padrão

libc++_shared

ANDROID_TOOLCHAIN_NAME

Somente para Android. Controla qual compilador é usado para compilar o SDK.

nota

Como o GCC está sendo descontinuado pelo Android NDK, recomendamos usar o valor padrão.

Padrão

standalone-clang

DISABLE_ANDROID_STANDALONE_BUILD

Somente para Android. Por padrão, as compilações do Android usam uma cadeia de ferramentas autônoma baseada em clang criada por meio de scripts do NDK. Para usar seu próprio conjunto de ferramentas, definia essa opção como ativada.

Valores

Ativado | Desativado

Padrão

DESL

NDK_DIR

Somente para Android. Especifica um caminho de substituição no qual o sistema de compilação deve encontrar o Android NDK. Por padrão, o sistema de compilação vai conferir as variáveis de ambiente (ANDROID_NDK) se essa variável não estiver definida.