

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

# 适用于 C\$1\$1 的 AWS SDK 从源代码获取
<a name="sdk-from-source"></a>

您可以先 适用于 C\$1\$1 的 AWS SDK 从源代码构建 SDK，然后将其安装到本地，从而使用代码中的。


**过程概述**  

| 一般流程  | 详细流程 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) |  首先从源代码构建 SDK 并安装它。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) |  然后使用 SDK 开发自己的应用程序。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sdk-for-cpp/v1/developer-guide/sdk-from-source.html)  | 

# 适用于 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/)

# 适用于 C\$1\$1 的 AWS SDK 在 Linux/macOS 上构建
<a name="setup-linux"></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，您需要满足以下条件之一：
+  GNU 编译器集合（GCC）4.9 或更高版本，或
+  Clang 3.3 或更高版本。

## 针对 Linux 系统的其他要求
<a name="additional-requirements-for-linux-systems"></a>

您必须为 `libcurl`、`libopenssl`、`libuuid`、`zlib` 添加标头文件（`-dev` 程序包），并为 Amazon Polly 支持添加 `libpulse`（可选）。您可以使用系统的程序包管理器查找程序包。

**在*基于 Debian/Ubuntu 的系统*上安装程序包**
+ 

  ```
  sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev zlib1g-dev libpulse-dev
  ```

**在*Linux/Redhat/Fedora/CentOS基于 Amazon 的系统*上安装软件包**
+ 

  ```
  sudo yum install libcurl-devel openssl-devel libuuid-devel pulseaudio-libs-devel
  ```

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

除了使用 vcpkg 之外，您也可以使用命令行工具从源代码构建 SDK。使用此方法，您可以自定义 SDK 构建。有关可用选项的信息，请参阅[CMake 参数](cmake-params.md)。

**从源代码构建 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` 以运行应用程序代码的发布配置。命令语法：

   `{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} -DCMAKE_INSTALL_PREFIX={path to install}`

   有关修改编译输出的更多方法，请参阅[CMake参数](cmake-params.md)。
**注意**  
在文件系统不区分大小写的 Mac 上构建时，请在运行构建版本的目录中检查 `pwd` 命令的输出。确保 `pwd` 输出中的目录名称使用大小写混合形式，例如 `/Users` 和 `Documents`。

   要生成构建文件，请执行以下操作之一：
   + **生成构建文件（全部 AWS 服务）**：要构建整个 SDK，请运行 cmake，指定是编译*调试*版本还是*发布*版本。例如：

     ```
     cmake ../aws-sdk-cpp -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=/usr/local/ -DCMAKE_INSTALL_PREFIX=/usr/local/
     ```

     
   + **生成构建文件（子集 AWS 服务）**：要仅为 SDK 生成一个或多个特定的服务包，请添加 CMake [BUILD\$1ONLY](cmake-params.md#cmake-build-only)参数，服务名称用分号分隔。以下示例仅构建 Amazon S3 服务包：

     ```
     cmake ../aws-sdk-cpp -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=/usr/local/ -DCMAKE_INSTALL_PREFIX=/usr/local/ -DBUILD_ONLY="s3"
     ```
**注意**  
如果出现错误 “无法构建第三方库”，请 CMake 通过运行来检查您的版本**cmake --version**。必须使用 CMake 最低版本 3.13。

1. 构建 SDK 二进制文件。如果您要构建整个 SDK，则此操作可能需要一小时或更长时间。

   ```
   cmake --build . --config=Debug
   ```

1. 安装 SDK。根据您选择的安装位置，您可能需要升级权限。

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

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

要针对 Android 进行构建，请将 `-DTARGET_ARCH=ANDROID` 添加到 `cmake` 命令行中。 适用于 C\$1\$1 的 AWS SDK 包括一个 CMake 工具链文件，该文件通过引用相应的环境变量 () `ANDROID_NDK` 来包含您需要的内容。有关示例应用程序，请参阅使用以下命令[设置 Android 应用程序 适用于 C\$1\$1 的 AWS SDK](https://aws.amazon.com/blogs/developer/setting-up-an-android-application-with-aws-sdk-for-c/)

# 使用适用于 C\$1\$1 的 AWS SDK 创建简单应用程序
<a name="build-cmake"></a>

 [CMake](https://cmake.org/)是一种构建工具，用于管理应用程序的依赖关系和创建适合您正在构建的平台的 makefile。您可以使用 CMake 创建和生成项目 适用于 C\$1\$1 的 AWS SDK。

此示例报告您拥有的 Amazon S3 存储桶。在此示例中，您的 AWS 账户中不需要 Amazon S3 存储桶，但如果您至少有一个存储桶，那会更有趣。如果您还没有存储桶，请参阅《Amazon Simple Storage Service 用户指南》**中的[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)。

## 第 1 步：编写代码
<a name="setting-up-a-cmake-project"></a>

此示例由一个文件夹（包含一个源文件 [`hello_s3.cpp`]）和一个 `CMakeLists.txt` 文件组成。该程序使用 Amazon S3 来报告存储桶信息。此代码也可在上的[AWS 代码示例存储库](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/hello_s3)中找到 GitHub。

可以在 `CMakeLists.txt` 构建配置文件中设置许多选项。有关更多信息，请参阅 CMake 网站上的[CMake教程](https://cmake.org/cmake-tutorial/)。

**注意**  
深度探索：设置 `CMAKE_PREFIX_PATH`  
默认情况下，macOS、Linux、安卓和其他非 Windows 平台 适用于 C\$1\$1 的 AWS SDK 上的，安装在 Windows 上`/usr/local`，安装在 Windows 上。`\Program Files (x86)\aws-cpp-sdk-all`  
当你将 AWS SDK 安装到这些标准位置时， CMake 会自动找到必要的资源。但是，如果您将 AWS SDK 安装到自定义位置，则必须告诉 CMake 在哪里可以找到构建 SDK 时产生的以下资源：  
`AWSSDKConfig.cmake`：一个配置文件，用于说明 CMake 如何在项目中查找和使用 AWS SDK 库。如果没有此文件， CMake则无法找到 AWS SDK 头文件、链接到 AWS SDK 库或设置正确的编译器标志。
（适用于版本 1.8 及更早版本）依赖项的位置：`aws-c-event-stream`、`aws-c-common`、`aws-checksums`
要设置自定义安装路径，请执行以下操作：  

```
cmake -DCMAKE_PREFIX_PATH=/path/to/your/aws-sdk-installation /path/to/project/you/are/building
```
如果您未设置自定义安装，则在 CMake 尝试在中`CMAKE_PREFIX_PATH`进行处理时，您的构建将失败，并显示诸如 AWSSDK “找不到” 之类`find_package(AWSSDK)`的错误`CMakeLists.txt`。

**注意**  
深入探索：Windows 运行时库  
要运行您的程序，需要 DLLs 在程序的可执行文件位置放置几个：`aws-c-common.dll``aws-c-event-stream.dll`、`aws-checksums.dll`、`aws-cpp-sdk-core.dll`、，以及任何 DLLs 基于程序组件的特定内容（此示例还需要，`aws-cpp-sdk-s3`因为它使用了 Amazon S3）。`CMakeLists.txt`文件中的第二条`if`语句将这些库从安装位置复制到可执行位置，以满足此要求。 `AWSSDK_CPY_DYN_LIBS`是由定义的宏 适用于 C\$1\$1 的 AWS SDK ，用于将 SDK DLLs 从安装位置复制到程序的可执行位置。如果 DLLs 它们不在可执行文件位置，则会出现 “找不到文件” 的运行时异常。如果您遇到这些错误，请查看 `CMakeLists.txt` 文件的这一部分，了解您的独特环境是否需要进行必要的更改。

**创建文件夹和源文件**

1. 创建一个`hello_s3`目录 and/or 项目来保存您的源文件。
**注意**  
要在 Visual Studio 中完成此示例，请执行以下操作：选择 “**创建新项目**”，然后选择 “**CMake 项目**”。将项目命名为 `hello_s3`。`CMakeLists.txt` 文件中会使用此项目名称。

1. 在该文件夹中，添加一个包含以下代码的 `hello_s3.cpp` 文件，该代码将报告您拥有的 Amazon S3 存储桶。

   ```
   #include <aws/core/Aws.h>
   #include <aws/s3/S3Client.h>
   #include <iostream>
   #include <aws/core/auth/AWSCredentialsProviderChain.h>
   using namespace Aws;
   using namespace Aws::Auth;
   
   /*
    *  A "Hello S3" starter application which initializes an Amazon Simple Storage Service (Amazon S3) client
    *  and lists the Amazon S3 buckets in the selected region.
    *
    *  main function
    *
    *  Usage: 'hello_s3'
    *
    */
   
   int main(int argc, char **argv) {
       Aws::SDKOptions options;
       // Optionally change the log level for debugging.
   //   options.loggingOptions.logLevel = Utils::Logging::LogLevel::Debug;
       Aws::InitAPI(options); // Should only be called once.
       int result = 0;
       {
           Aws::Client::ClientConfiguration clientConfig;
           // Optional: Set to the AWS Region (overrides config file).
           // clientConfig.region = "us-east-1";
                  
           // You don't normally have to test that you are authenticated. But the S3 service permits anonymous requests, thus the s3Client will return "success" and 0 buckets even if you are unauthenticated, which can be confusing to a new user. 
           auto provider = Aws::MakeShared<DefaultAWSCredentialsProviderChain>("alloc-tag");
           auto creds = provider->GetAWSCredentials();
           if (creds.IsEmpty()) {
               std::cerr << "Failed authentication" << std::endl;
           }
   
           Aws::S3::S3Client s3Client(clientConfig);
           auto outcome = s3Client.ListBuckets();
   
           if (!outcome.IsSuccess()) {
               std::cerr << "Failed with error: " << outcome.GetError() << std::endl;
               result = 1;
           } else {
               std::cout << "Found " << outcome.GetResult().GetBuckets().size()
                         << " buckets\n";
               for (auto &bucket: outcome.GetResult().GetBuckets()) {
                   std::cout << bucket.GetName() << std::endl;
               }
           }
       }
   
       Aws::ShutdownAPI(options); // Should only be called once.
       return result;
   }
   ```

1. 添加一个 `CMakeLists.txt` 文件，指定项目名称、可执行文件、源文件和链接库。

   ```
   # Set the minimum required version of CMake for this project.
   cmake_minimum_required(VERSION 3.13)
   
   # Set the AWS service components used by this project.
   set(SERVICE_COMPONENTS s3)
   
   # Set this project's name.
   project("hello_s3")
   
   # Set the C++ standard to use to build this target.
   # At least C++ 11 is required for the AWS SDK for C++.
   set(CMAKE_CXX_STANDARD 11)
   
   # Use the MSVC variable to determine if this is a Windows build.
   set(WINDOWS_BUILD ${MSVC})
   
   if (WINDOWS_BUILD) # Set the location where CMake can find the installed libraries for the AWS SDK.
       string(REPLACE ";" "/aws-cpp-sdk-all;" SYSTEM_MODULE_PATH "${CMAKE_SYSTEM_PREFIX_PATH}/aws-cpp-sdk-all")
       list(APPEND CMAKE_PREFIX_PATH ${SYSTEM_MODULE_PATH})
   endif ()
   
   # Find the AWS SDK for C++ package.
   find_package(AWSSDK REQUIRED COMPONENTS ${SERVICE_COMPONENTS})
   
   if (WINDOWS_BUILD AND AWSSDK_INSTALL_AS_SHARED_LIBS)
       # Copy relevant AWS SDK for C++ libraries into the current binary directory for running and debugging.
   
       # set(BIN_SUB_DIR "/Debug") # if you are building from the command line you may need to uncomment this
       # and set the proper subdirectory to the executables' location.
   
       AWSSDK_CPY_DYN_LIBS(SERVICE_COMPONENTS "" ${CMAKE_CURRENT_BINARY_DIR}${BIN_SUB_DIR})
   endif ()
   
   add_executable(${PROJECT_NAME}
           hello_s3.cpp)
   
   target_link_libraries(${PROJECT_NAME}
           ${AWSSDK_LINK_LIBRARIES})
   ```

## 第 2 步：使用 CMake
<a name="building-with-cmake"></a>

CMake 使用中的信息`CMakeLists.txt`来生成可执行程序。

建议您按照所用 IDE 的标准做法来构建此应用程序。

**使用命令行构建应用程序**

1. 创建一个目录，**`cmake`** 将在其中构建您的应用程序。

   ```
   mkdir my_project_build
   ```

1. 切换到构建目录并使用项目源代码目录的路径运行 **`cmake`**。

   ```
   cd my_project_build
   cmake ../
   ```

1. **`cmake`** 生成构建目录后，您可以使用 **`make`**（在 Windows 上为 **`nmake`**）或 MSBUILD（`msbuild ALL_BUILD.vcxproj` 或 `cmake --build . --config=Debug`）来构建应用程序。

## 步骤 3：运行
<a name="run-app"></a>

运行此应用程序时，它会显示控制台输出，其中会列出 Amazon S3 存储桶的总数和每个存储桶的名称。

建议您按照所用 IDE 的标准做法来运行此应用程序。

**注意**  
请记得登录！如果您使用 IAM 身份中心进行身份验证，请记住使用 AWS CLI `aws sso login`命令登录。

**通过命令行运行程序**

1. 切换到生成构建结果的 Debug 目录。

1. 使用可执行文件的名称运行该程序。

   ```
   hello_s3
   ```

有关使用的其他示例 适用于 C\$1\$1 的 AWS SDK，请参阅[AWS 服务 使用适用于 C\$1\$1 的 AWS SDK 进行调用的指导示例](programming-services.md)。