在 Windows 上构建 适用于 C++ 的 AWS SDK - 适用于 C++ 的 AWS SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Windows 上构建 适用于 C++ 的 AWS SDK

要设置适用于 C++ 的 AWS SDK,您可以直接从源代码构建 SDK,也可以使用程序包管理器下载库。

SDK 源代码按服务划分为单独的程序包。安装整个 SDK 最多可能需要一个小时。仅安装程序使用的特定服务子集可以缩短安装时间,还可以减小所需磁盘空间。若要选择安装哪些服务,您需要知道程序所使用的每个服务的程序包名称。您可以在 GitHub 上的 aws/aws-sdk-cpp 中查看程序包目录列表。程序包名称是服务目录名称的后缀。

aws-sdk-cpp\aws-cpp-sdk-<packageName> # Repo directory name and packageName aws-sdk-cpp\aws-cpp-sdk-s3 # Example: Package name is s3

先决条件

要构建一些较大的 AWS 客户端,您至少需要 4 GB 的 RAM。由于内存不足,该 SDK 可能无法在 Amazon EC2 实例类型 t2.microt2.small 和其他小型实例类型上构建。

要使用 适用于 C++ 的 AWS SDK,您需要以下某一项:

  • Microsoft Visual Studio 2015 或更高版本,

  • GNU 编译器集合(GCC)4.9 或更高版本,或

  • Clang 3.3 或更高版本。

在 Windows 上,SDK 是使用 WinHTTP 作为默认 HTTP 客户端构建的。但是,WinHTTP 1.0 不支持 HTTP/2 双向流,这是 Amazon Transcribe 和 Amazon Lex 等某些 AWS 服务所必需的。因此,有时需要使用 SDK 构建 curl 支持。要查看所有可用的 curl 下载选项,请参阅 curl 版本和下载。以下是构建支持 curl 的 SDK 的一种方法:

构建支持 curl 库的 SDK
  1. 导航到 Windows 版 curl 并下载适用于 Microsoft Windows 的 curl 二进制程序包。

  2. 例如,将程序包提取到您计算机上的某个文件夹中,例如 C:\curl

  3. 导航到从 Mozilla 提取的 CA 证书并下载 cacert.pem 文件。此隐私增强邮件(PEM)文件包含一套有效的数字证书,用于验证安全网站的真实性。这些证书由 GlobalSign 和 Verisign 等证书颁发机构(CA)公司分发。

  4. 例如,将 cacert.pem 文件移至您在上一步解压缩的 bin 子文件夹中,例如 C:\curl\bin。将该文件重命名为 curl-ca-bundle.crt

此外,Microsoft 编译引擎(MSBuild)必须能够在接下来的步骤中找到 dll。因此,您应该将 curl bin 文件夹路径添加到 Windows PATH 环境变量中,例如 set PATH=%PATH%;C:\curl\bin。每次打开新命令提示符来构建 SDK 时,都必须添加此路径。或者,您可以在 Windows 系统设置中全局配置环境变量,以便记住该设置。

在接下来的步骤中从源代码构建 SDK 时,请参阅步骤 5(生成构建文件),了解使用 curl 构建 SDK 所需的命令语法。

编写代码时,必须将在代码中配置适用于 C++ 的 AWS SDK 服务客户端中的 caFile 设置为证书文件所在位置。有关使用 Amazon Transcribe 的示例,请参阅 GitHub 上 AWS 代码示例存储库中的 transcribe-streaming

从源代码构建 SDK

您可以使用命令行工具从源代码构建 SDK。使用此方法,您可以自定义 SDK 构建。有关可用选项的信息,请参阅 CMake 参数。下面是三个主要步骤。首先,您使用 CMake 构建文件。第二步,您使用 MSBuild 来构建适用于您的操作系统和构建工具链的 SDK 二进制文件。第三步,您将二进制文件安装或复制到开发计算机上的正确位置。

从源代码构建 SDK
  1. 安装 CMake(最低版本 3.13)和适用于您平台的相关构建工具。建议将 cmake 添加到您的 PATH。要检查您的 CMake 版本,请打开命令提示符并运行命令 cmake --version

  2. 在命令提示符下,导航至希望存储 SDK 的文件夹。

  3. 获取最新源代码。

    版本 1.11 使用 git 子模块来封装外部依赖项。这包括《AWS SDK 和工具参考指南》中描述的 CRT 库

    从 GitHub 上的 aws/aws-sdk-cpp 下载或克隆 SDK 源代码:

    • 使用 Git 克隆:HTTPS

      git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp
    • 使用 Git 克隆:SSH

      git clone --recurse-submodules git@github.com:aws/aws-sdk-cpp.git
  4. 建议您将生成的构建文件存储在 SDK 源目录之外。创建一个用于存储构建文件的新目录并导航到该文件夹。

    mkdir sdk_build cd sdk_build
  5. 通过运行 cmake 生成构建文件。在 cmake 命令行上指定是编译调试版还是发布版本。在此过程中选择 Debug 以运行应用程序代码的调试配置。在此过程中选择 Release 以运行应用程序代码的发布配置。对于 Windows,SDK 安装位置通常为 \Program Files (x86)\aws-cpp-sdk-all\。命令语法:

    {path to cmake if not in PATH} {path to source location of aws-sdk-cpp} -DCMAKE_BUILD_TYPE=[Debug | Release] -DCMAKE_PREFIX_PATH={path to install destination}

    有关修改构建输出的更多方法,请参阅 CMake 参数

    要生成构建文件,请执行以下操作之一:

    • 生成构建文件(全部 AWS 服务):要构建整个 SDK,请运行 cmake,指定是构建调试版本还是发布版本。例如:

      cmake "..\aws-sdk-cpp" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="C:\Program Files (x86)\aws-cpp-sdk-all"

    • 生成构建文件(部分 AWS 服务):要仅为 SDK 生成一个或多个特定的服务包,请添加 CMake BUILD_ONLY 参数,服务名称用分号分隔。以下示例仅构建 Amazon S3 服务包:

      cmake ..\aws-sdk-cpp -DCMAKE_BUILD_TYPE=Debug -DBUILD_ONLY="s3" -DCMAKE_PREFIX_PATH="C:\Program Files (x86)\aws-cpp-sdk-all"
    • 生成构建文件(使用 curl):满足 curl 先决条件后,还需要另外三个 cmake 命令行选项才能在 SDK 中支持 curl:FORCE_CURLCURL_INCLUDE_DIRCURL_LIBRARY。例如:

      cmake ..\aws-sdk-cpp -DCMAKE_BUILD_TYPE=Debug -DFORCE_CURL=ON -DCURL_INCLUDE_DIR='C:/curl/include' -DCURL_LIBRARY='C:/curl/lib/libcurl.dll.a' -DCMAKE_PREFIX_PATH="C:\Program Files (x86)\aws-cpp-sdk-all"
    注意

    如果您遇到错误 Failed to build third-party libraries,请运行 cmake --version 检查您的 CMake 版本。您必须使用 CMake 最低版本 3.13。

  6. 构建 SDK 二进制文件。如果您要构建整个 SDK,则此步骤可能需要一小时或更长时间。命令语法:

    {path to cmake if not in PATH} --build . --config=[Debug | Release]

    cmake --build . --config=Debug
    注意

    如果您遇到错误 The code execution cannot proceed ... dll not found. Reinstalling the program may fix this problem,请重试 cmake 命令。

  7. 使用管理员权限打开命令提示符,将 SDK 安装在之前使用 CMAKE_PREFIX_PATH 参数指定的位置。命令语法:

    {path to cmake if not in PATH} --install . --config=[Debug | Release]

    cmake --install . --config=Debug

在 Windows 上为 Android 系统构建

要针对 Android 进行构建,请将 -DTARGET_ARCH=ANDROID 添加到 cmake 命令行中。适用于 C++ 的 AWS SDK 包括一个 CMake 工具链文件,该文件通过引用相应的环境变量(ANDROID_NDK)来包含您需要的内容。

要在 Windows 上构建适用于 Android 的 SDK,您需要在 Visual Studio(2015 或更高版本)的开发者命令提示符下运行 cmake。您还需要安装 NMAKE,并在您的路径中安装命令 gitpatch。如果您已经在 Windows 系统上安装了 git,很可能会在同级目录(.../Git/usr/bin/)中找到 patch。验证这些要求后,您的 cmake 命令行将稍作更改以使用 NMAKE。

cmake -G "NMake Makefiles" `-DTARGET_ARCH=ANDROID` <other options> ..

NMAKE 是连续构建的。为了加快构建速度,建议您安装 JOM 作为 NMAKE 的替代方案,然后按如下方式更改 cmake 调用:

cmake -G "NMake Makefiles JOM" `-DTARGET_ARCH=ANDROID` <other options> ..

有关示例应用程序,请参阅使用适用于 C++ 的 AWS SDK 设置 Android 应用程序