

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 소스 코드 AWS SDK for C\$1\$1 에서 가져오기
<a name="sdk-from-source"></a>

먼저 소스 AWS SDK for C\$1\$1 에서 SDK를 빌드한 다음 로컬에 설치하여 코드에서를 사용할 수 있습니다.


**프로세스 개요**  

| 일반 프로세스  | 자세한 프로세스 | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) |  먼저 소스에서 SDK를 빌드한 다음 설치합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sdk-for-cpp/v1/developer-guide/sdk-from-source.html) |  그런 다음 SDK를 사용하여 자체 애플리케이션을 개발합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sdk-for-cpp/v1/developer-guide/sdk-from-source.html)  | 

# Windows AWS SDK for C\$1\$1 에서 빌드
<a name="setup-windows"></a>

를 설정하려면 소스에서 직접 SDK를 빌드하거나 패키지 관리자를 사용하여 라이브러리를 다운로드할 AWS SDK for C\$1\$1수 있습니다.



SDK 소스는 서비스별로 개별 패키지로 구분됩니다. 전체 SDK를 설치하는 데 최대 1시간이 걸릴 수 있습니다. 프로그램에서 사용하는 특정 서비스 하위 집합만 설치하면 설치 시간이 단축되고 디스크 공간도 절약됩니다. 설치할 서비스를 선택하려면 프로그램에서 사용하는 각 서비스의 패키지 이름을 알아야 합니다. 패키지 디렉터리 목록은 GitHub의 [https://github.com/aws/aws-sdk-cpp](https://github.com/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
```

## 사전 조건
<a name="prerequisites"></a>

일부 대형 AWS 클라이언트를 빌드하려면 최소 4GB의 RAM이 필요합니다. Amazon EC2 인스턴스 유형 *t2.micro*, *t2.small* 및 기타 소형 인스턴스 유형에서는 메모리 부족으로 인해 SDK 빌드가 실패할 수 있습니다.

를 사용하려면 다음 중 하나가 AWS SDK for C\$1\$1필요합니다.
+ Microsoft Visual Studio 2015 이후 버전 
+  GNU Compiler Collection(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은 Amazon Transcribe 및 Amazon Lex AWS 서비스 와 같은 일부에 필요한 HTTP/2 양방향 스트리밍을 지원하지 않습니다. 따라서 SDK에 curl 지원을 추가하여 빌드해야 하는 경우가 있습니다. 사용 가능한 모든 curl 다운로드 옵션을 보려면 [curl Releases and Downloads](https://curl.se/download.html)를 참조하세요. SDK에 curl 지원을 추가하여 빌드하는 한 가지 방법은 다음과 같습니다.

**curl 라이브러리 지원을 포함하여 SDK를 빌드하려면**

1. [curl for Windows](https://curl.se/windows/)로 이동하여 Microsoft Windows용 curl 바이너리 패키지를 다운로드합니다.

1. 컴퓨터의 폴더(예: `C:\curl`)에 패키지의 압축을 풉니다.

1. [CA certificates extracted from Mozilla](http://curl.haxx.se/docs/caextract.html)로 이동하여 `cacert.pem` 파일을 다운로드합니다. 이 Privacy Enhanced Mail(PEM) 파일에는 보안 웹 사이트의 신뢰성을 검증하는 데 사용되는 유효한 디지털 인증서의 번들 포함되어 있습니다. 인증서는 GlobalSign 및 Verisign과 같은 인증 기관(CA)에서 배포합니다.

1. `cacert.pem` 파일을 이전 단계에서 압축을 푼 `bin` 하위 폴더(예: `C:\curl\bin`)로 이동합니다. 파일 이름을 `curl-ca-bundle.crt`로 변경합니다.

또한 다음 절차에서도 Microsoft Build Engine(MSBuild)이 curl `dll`을 찾을 수 있어야 합니다. 따라서와 같은 Windows `PATH` 환경 변수에 curl `bin` 폴더 경로를 추가해야 합니다(예: `set PATH=%PATH%;C:\curl\bin`). SDK를 빌드하기 위해 새 명령 프롬프트를 열 때마다 이를 추가해야 합니다. 또는 Windows 시스템 설정에서 환경 변수를 전역적으로 설정하여 설정이 유지되도록 할 수도 있습니다.

다음 절차에 따라 *소스에서 SDK를 빌드*할 경우 SDK에 curl을 빌드하는 데 필요한 명령 구문은 5단계(빌드 파일 생성)를 참조하세요.

코드를 작성할 때 [코드에서 AWS SDK for C\$1\$1 서비스 클라이언트 구성](client-config.md)에서 `caFile`을 인증서 파일의 위치로 설정해야 합니다. Amazon Transcribe를 사용한 예제는 GitHub의 **AWS 코드 예제 리포지토리에서 [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) 섹션을 참조하세요.

## 소스에서 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 SDK 및 도구 참조 안내서에 설명된 [CRT 라이브러리](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)가 포함됩니다.

   GitHub의 [https://github.com/aws/aws-sdk-cpp](https://github.com/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
     ```

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 사전 조건을 완료한 후 SDK에 curl 지원을 포함하려면 세 가지 추가 cmake 명령줄 옵션인 [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"
     ```
**참고**  
Failed to build third-party libraries 오류가 발생하면 **cmake --version**을 실행하여 CMake 버전을 확인합니다. CMake 버전은 최소 3.13 이상을 사용해야 합니다.

1. SDK 바이너리를 빌드합니다. 전체 SDK를 빌드하는 경우 이 단계에 1시간 이상 소요될 수 있습니다. 명령 구문: 

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

   ```
   cmake --build . --config=Debug
   ```
**참고**  
코드 실행을 진행할 수 없습니다. dll을 찾을 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다." 오류가 발생할 경우 `cmake` 명령을 다시 시도하세요.

1. **관리자** 권한으로 명령 프롬프트를 열어 `CMAKE_PREFIX_PATH` 파라미터를 사용하여 앞서 지정한 위치에 SDK를 설치합니다. 명령 구문: 

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

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

## Windows에서 Android용 빌드
<a name="building-for-android"></a>

Android용 빌드를 수행하려면 `cmake` 명령줄에 `-DTARGET_ARCH=ANDROID`를 추가합니다. AWS SDK for C\$1\$1 에는 적절한 환경 변수()를 참조하여 필요한 것이 포함된 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이 설치되어 있다면 **`patch`**는 일반적으로 형제 디렉터리(예: `.../Git/usr/bin/`)에서 찾을 수 있습니다. 이러한 요구 사항을 확인한 후에는 NMAKE를 사용하기 위해 `cmake` 명령줄이 약간 변경됩니다.

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

NMAKE는 순차적으로 빌드합니다. 더 빠르게 빌드하려면 NMAKE 대신 JOM을 설치하고, 다음과 같이 `cmake` 간접 호출을 변경하는 것이 좋습니다.

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

예제 애플리케이션은 [를 사용하여 Android 애플리케이션 설정을 참조하세요. AWS SDK for C\$1\$1](https://aws.amazon.com/blogs/developer/setting-up-an-android-application-with-aws-sdk-for-c/)

# Linux/macOS AWS SDK for C\$1\$1 에서 빌드
<a name="setup-linux"></a>

를 설정하려면 소스에서 직접 SDK를 빌드하거나 패키지 관리자를 사용하여 라이브러리를 다운로드할 AWS SDK for C\$1\$1수 있습니다.



SDK 소스는 서비스별로 개별 패키지로 구분됩니다. 전체 SDK를 설치하는 데 최대 1시간이 걸릴 수 있습니다. 프로그램에서 사용하는 특정 서비스 하위 집합만 설치하면 설치 시간이 단축되고 디스크 공간도 절약됩니다. 설치할 서비스를 선택하려면 프로그램에서 사용하는 각 서비스의 패키지 이름을 알아야 합니다. 패키지 디렉터리 목록은 GitHub의 [https://github.com/aws/aws-sdk-cpp](https://github.com/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
```

## 사전 조건
<a name="prerequisites"></a>

일부 대형 AWS 클라이언트를 빌드하려면 최소 4GB의 RAM이 필요합니다. Amazon EC2 인스턴스 유형 *t2.micro*, *t2.small* 및 기타 소형 인스턴스 유형에서는 메모리 부족으로 인해 SDK 빌드가 실패할 수 있습니다.

를 사용하려면 다음 중 하나가 AWS SDK for C\$1\$1필요합니다.
+  GNU Compiler Collection(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
  ```

***Amazon Linux/Redhat/Fedora/CentOS 기반 시스템*에 패키지를 설치하려면**
+ 

  ```
  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 SDK 및 도구 참조 안내서에 설명된 [CRT 라이브러리](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)가 포함됩니다.

   GitHub의 [https://github.com/aws/aws-sdk-cpp](https://github.com/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
     ```

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"
     ```
**참고**  
Failed to build third-party libraries 오류가 발생하면 **cmake --version**을 실행하여 CMake 버전을 확인합니다. CMake 버전은 최소 3.13 이상을 사용해야 합니다.

1. SDK 바이너리를 빌드합니다. 전체 SDK를 빌드하는 경우 이 작업에 1시간 이상 소요될 수 있습니다.

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

1. SDK를 설치합니다. 설치하기로 선택한 위치에 따라 권한을 에스컬레이션해야 할 수 있습니다.

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

## Linux에서 Android용 빌드
<a name="building-for-android"></a>

Android용 빌드를 수행하려면 `cmake` 명령줄에 `-DTARGET_ARCH=ANDROID`를 추가합니다. AWS SDK for C\$1\$1 에는 적절한 환경 변수()를 참조하여 필요한 것이 포함된 CMake 도구 체인 파일이 포함되어 있습니다`ANDROID_NDK`. 예제 애플리케이션은 [를 사용하여 Android 애플리케이션 설정을 참조하세요. AWS SDK for C\$1\$1](https://aws.amazon.com/blogs/developer/setting-up-an-android-application-with-aws-sdk-for-c/)

# AWS SDK for C\$1\$1를 사용하여 간단한 애플리케이션 생성
<a name="build-cmake"></a>

 [CMake](https://cmake.org/)는 애플리케이션의 종속성을 관리하고 빌드 중인 플랫폼에 적합한 makefile을 생성하는 데 사용하는 빌드 도구입니다. CMake를 사용하여 AWS SDK for C\$1\$1로 프로젝트를 생성하고 빌드할 수 있습니다.

이 예제에서는 사용자가 소유한 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를 사용하여 스토리지 버킷 정보를 보고합니다. 이 코드는 GitHub의 [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/cpp/example_code/s3/hello_s3)에서도 확인할 수 있습니다.

`CMakeLists.txt` 빌드 구성 파일에서 여러 옵션을 설정할 수 있습니다. 자세한 내용은 CMake 웹 사이트에서 [CMake 자습서](https://cmake.org/cmake-tutorial/)를 참조하세요.

**참고**  
심층 분석: `CMAKE_PREFIX_PATH` 설정  
기본적으로 AWS SDK for C\$1\$1 macOS, Linux, Android 및 기타 Windows가 아닌 플랫폼의는에 설치`/usr/local`되고 Windows의는에 설치됩니다`\Program Files (x86)\aws-cpp-sdk-all`.  
이러한 표준 위치에 AWS SDK를 설치하면 CMake가 필요한 리소스를 자동으로 찾습니다. 그러나 AWS SDK를 사용자 지정 위치에 설치하는 경우 SDK 빌드로 인해 발생하는 다음 리소스를 찾을 수 있는 위치를 CMake에 알려야 합니다.  
`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_PREFIX_PATH`를 설정하지 않으면 CMake가 `CMakeLists.txt`에서 `find_package(AWSSDK)`를 처리할 때 "AWSSDK를 찾을 수 없음"과 같은 오류가 발생하면서 빌드가 실패합니다.

**참고**  
심층 분석: Windows 런타임 라이브러리  
프로그램을 실행하려면 프로그램의 실행 위치에 `aws-c-common.dll`, `aws-c-event-stream.dll`, `aws-checksums.dll`, `aws-cpp-sdk-core.dll` 등의 여러 DLL이 필요할 뿐만 아니라 프로그램의 구성 요소에 따른 특정 DLL도 필요합니다. 이 예제에서는 Amazon S3를 사용하므로 `aws-cpp-sdk-s3`도 필요합니다. `CMakeLists.txt` 파일의 두 번째 `if` 문은 설치 위치에서 실행 가능한 위치로 이러한 라이브러리를 복사하여이 요구 사항을 충족합니다. `AWSSDK_CPY_DYN_LIBS`는 설치 위치에서 프로그램의 실행 가능한 위치로 SDK의 DLLs을 복사 AWS SDK for C\$1\$1 하는에서 정의한 매크로입니다. 이러한 DLL이 실행 파일 위치에 없는 경우 '파일을 찾을 수 없음' 런타임 예외가 발생합니다. 이러한 오류가 발생할 경우 `CMakeLists.txt` 파일의 이 부분을 검토하여 고유한 환경에 필요한 변경 사항을 확인합니다.

**폴더와 소스 파일을 생성하려면**

1. 소스 파일을 보관할 `hello_s3` 디렉터리 및/또는 프로젝트를 생성합니다.
**참고**  
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의 표준 관행에 따라 애플리케이션을 실행하는 것이 좋습니다.

**참고**  
로그인하는 것을 잊지 마세요\$1 IAM Identity Center를 사용하여 인증하는 경우 명령을 사용하여 AWS CLI `aws sso login` 로그인해야 합니다.

**명령줄을 통해 프로그램을 실행하려면**

1. 빌드 결과가 생성된 디버그 디렉터리로 변경합니다.

1. 실행 파일의 이름을 사용하여 프로그램을 실행합니다.

   ```
   hello_s3
   ```

를 사용하는 추가 예제는 단원을 AWS SDK for C\$1\$1참조하십시오[AWS SDK for C\$1\$1를 AWS 서비스 사용하여를 호출하는 가이드 예제](programming-services.md).