

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

# 适用于 C\$1\$1 的 AWS SDK 在 Windows 上构建
<a name="setup-windows"></a>

要进行设置 适用于 C\$1\$1 的 AWS SDK，您可以直接从源代码自行构建 SDK，也可以使用包管理器下载库。



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

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

## 先决条件
<a name="prerequisites"></a>

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

要使用 适用于 C\$1\$1 的 AWS SDK，您需要满足以下条件之一：
+ Microsoft Visual Studio 2015 或更高版本，
+  GNU 编译器集合（GCC）4.9 或更高版本，或
+  Clang 3.3 或更高版本。

## 使用 curl 构建适用于 Windows 的 SDK
<a name="build-curl-id"></a>

在 Windows 上，SDK 是使用 [WinHTTP](https://msdn.microsoft.com/en-us/library/windows/desktop/aa382925%28v=vs.85%29.aspx) 作为默认 HTTP 客户端构建的。但是，WinHTTP 1.0 不支持 HTTP/2 双向直播，这是 Amazon Transcribe 和 AWS 服务 Amazon Lex 等某些内容所必需的。因此，有时需要使用 SDK 构建 curl 支持。要查看所有可用的 curl 下载选项，请参阅 [curl 版本和下载](https://curl.se/download.html)。以下是构建支持 curl 的 SDK 的一种方法：

**构建支持 curl 库的 SDK**

1. 导航到 [Windows 版 curl](https://curl.se/windows/) 并下载适用于 Microsoft Windows 的 curl 二进制程序包。

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

1. 导航到[从 Mozilla 提取的 CA 证书](http://curl.haxx.se/docs/caextract.html)并下载 `cacert.pem` 文件。此隐私增强邮件（PEM）文件包含一套有效的数字证书，用于验证安全网站的真实性。证书由证书颁发机构 (CA) 公司分发，例如 GlobalSign 和威瑞信。

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

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

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

编写代码时，必须将[在代码中配置适用于 C\$1\$1 的 AWS SDK 服务客户端](client-config.md)中的 `caFile` 设置为证书文件所在位置。有关使用 Amazon Transcribe 的示例，请参阅[https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/transcribe-streaming](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/transcribe-streaming)上的 “*AWS 代码示例存储库*”。 GitHub

## 从源代码构建 SDK
<a name="setup-windows-from-source"></a>

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

**从源代码构建 SDK**

1. 安装 [CMake](https://cmake.org/)（最低版本 3.13）和适用于您平台的相关构建工具。建议将 `cmake` 添加到您的 `PATH`。要查看您的版本 CMake，请打开命令提示符并运行命令 **cmake --version**

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

1. 获取最新源代码。

   版本 1.11 使用 git 子模块来封装外部依赖项。这包括《工具参考指南》*AWS SDKs 和《工具参考指南*》中描述的 [CRT 库](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)。

   从以下位置下载或克隆 SDK 源[https://github.com/aws/aws-sdk-cpp](https://github.com/aws/aws-sdk-cpp)代码 GitHub：
   + 使用 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
     ```

1. 建议您将生成的构建文件存储在 SDK 源目录之外。创建一个用于存储构建文件的新目录并导航到该文件夹。

   ```
   mkdir sdk_build
   cd sdk_build
   ```

1. 通过运行 `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参数](cmake-params.md)。

   要生成构建文件，请执行以下操作之一：
   + **生成构建文件（全部 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\$1ONLY](cmake-params.md#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\$1CURL](cmake-params.md#cmake-force-curl)、[CURL\$1INCLUDE\$1DIR](cmake-params.md#cmake-curl-include-dir) 和 [CURL\$1LIBRARY](cmake-params.md#cmake-curl-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"
     ```
**注意**  
如果出现错误 “无法构建第三方库”，请 CMake 通过运行来检查您的版本**cmake --version**。您必须使用 CMake 最低版本 3.13。

1. 构建 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` 命令。

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

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

   ```
   cmake --install . --config=Debug
   ```

## 在 Windows 上为 Android 系统构建
<a name="building-for-android"></a>

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

要在 Windows 上构建适用于 Android 的 SDK，您需要在 Visual Studio（2015 或更高版本）的开发者命令提示符下运行 `cmake`。您还需要安装 [NMAKE](https://docs.microsoft.com/en-us/cpp/build/reference/nmake-reference?view=msvc-160)，并在您的路径中安装命令 **`git`** 和 **`patch`**。如果您已经在 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> ..
```

有关示例应用程序，请参阅使用以下命令[设置 Android 应用程序 适用于 C\$1\$1 的 AWS SDK](https://aws.amazon.com/blogs/developer/setting-up-an-android-application-with-aws-sdk-for-c/)