

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

# 시작하기 AWS SDK for C\$1\$1
<a name="getting-started"></a>

AWS SDK for C\$1\$1 는 Amazon Web Services에 연결하는 데 사용할 수 있는 모듈화된 교차 플랫폼 오픈 소스 라이브러리입니다.

는 [CMake](https://cmake.org/)를 AWS SDK for C\$1\$1 사용하여 비디오 게임, 시스템, 모바일 및 임베디드 디바이스를 비롯한 여러 도메인에서 여러 플랫폼을 지원합니다. CMake는 애플리케이션의 종속성을 관리하고 빌드 중인 플랫폼에 적합한 makefile을 생성하는 데 사용할 수 있는 빌드 도구입니다. CMake는 플랫폼 또는 애플리케이션에 사용되지 않는 빌드 부분을 제거합니다.

코드를 실행하여 AWS 리소스에 액세스하기 전에 코드가 인증되는 방법을 설정해야 합니다 AWS.
+  [AWS SDK for C\$1\$1를 AWS 사용하여 로 인증](credentials.md)

코드 AWS SDK for C\$1\$1 에서를 사용하려면 SDK 소스를 직접 빌드하거나 패키지 관리자를 사용하여 SDK 실행 파일을 가져옵니다.
+  [소스 코드 AWS SDK for C\$1\$1 에서 가져오기](sdk-from-source.md)
+  [패키지 관리자 AWS SDK for C\$1\$1 에서 가져오기](sdk-from-pm.md)

CMake와 관련된 빌드 문제가 발생하는 경우 [AWS SDK for C\$1\$1 빌드 문제 해결](troubleshooting-cmake.md) 섹션을 참조하세요.

# AWS SDK for C\$1\$1를 AWS 사용하여 로 인증
<a name="credentials"></a>

를 사용하여 개발할 AWS 때 코드가 로 인증되는 방법을 설정해야 합니다 AWS 서비스. 환경 및 사용 가능한 액세스에 따라 다양한 방식으로 AWS 리소스에 대한 프로그래밍 방식 AWS 액세스를 구성할 수 있습니다. 모든 주요 인증 방법에 대한 선택 사항과 SDK용으로 구성하는 방법에 대한 지침은 **AWS SDK 및 도구 참조 안내서에서 [인증 및 액세스](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)를 참조하세요.

## 콘솔 자격 증명 사용
<a name="using-con-creds"></a>

로컬 개발의 경우 새 사용자는 기존 AWS Management Console 로그인 자격 증명을 사용하여 AWS 서비스에 프로그래밍 방식으로 액세스하는 것이 좋습니다. 브라우저 기반 인증 흐름 후는 AWS CLI 및 AWS SDKs AWS Tools for PowerShell 와 같은 로컬 개발 도구에서 작동하는 임시 자격 증명을 AWS생성합니다. 이 기능은 특히 장기 액세스 키를 관리하는 것보다 대화형 인증을 선호하는 경우 AWS CLI 자격 증명을 구성하고 관리하는 프로세스를 간소화합니다.

이 방법을 선택하는 경우 지침에 따라 AWS CLI를 사용하여 콘솔 자격 증명으로 로그인합니다. 자세한 내용은 [콘솔 자격 증명을 사용하여 AWS 로컬 개발을 위해 로그인](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html)을 참조하세요.

 AWS CLI로 설정하면 [기본 자격 증명 공급자 체인](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/credproviders.html#credproviders-default-credentials-provider-chain)이 AWS CLI에서 캐시한 로그인 토큰을 사용하여 요청을 자동으로 시작합니다.

## IAM Identity Center 사용
<a name="using-iam-id-cent"></a>

이 방법에는 구성이 쉽고 AWS 액세스 포털 AWS CLI 에 정기적으로 로그인하기 위한 설치가 포함됩니다.

 이 방법을 선택하는 경우 *AWS SDK 및 도구 참조 가이드*의 [IAM Identity Center 인증](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) 절차를 완료합니다. 그런 다음 환경에 다음 요소가 포함되어야 합니다.
+ 애플리케이션을 실행하기 전에 AWS 액세스 포털 세션을 시작하는 데 AWS CLI사용하는 입니다.
+ SDK에서 참조할 수 있는 구성 값 세트가 포함된 `[default]` 프로필이 있는 [shared AWS`config` file](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)입니다. 이 파일의 위치를 찾으려면 **AWS SDK 및 도구 참조 가이드에서 [공유 파일의 위치](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)를 참조하세요.
+  공유 `config` 파일은 [https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html) 설정을 지정합니다. 이렇게 하면 SDK AWS 리전 가 AWS 요청에 사용하는 기본값이 설정됩니다. 이 리전은 사용할 리전이 지정되지 않은 SDK 서비스 요청에 사용됩니다.
+  SDK는 AWS에 요청을 보내기 전에 프로필의 [SSO token provider configuration](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile)을 사용하여 보안 인증을 얻습니다. IAM Identity Center 권한 세트에 연결된 IAM 역할인 `sso_role_name` 값은 애플리케이션에 AWS 서비스 사용되는에 대한 액세스를 허용해야 합니다.

  다음 샘플 `config` 파일은 SSO 토큰 공급자 구성으로 설정된 기본 프로필을 보여줍니다. 프로필의 `sso_session` 설정은 이름이 지정된 [`sso-session` section](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session)을 참조합니다. `sso-session` 섹션에는 AWS 액세스 포털 세션을 시작하는 설정이 포함되어 있습니다.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

 AWS SDK for C\$1\$1 는 IAM Identity Center 인증을 사용하기 위해 애플리케이션에 추가 패키지(예: `SSO` 및 `SSOOIDC`)를 추가할 필요가 없습니다.

### AWS 액세스 포털 세션 시작
<a name="accessportal"></a>

에 액세스하는 애플리케이션을 실행하기 전에 SDK가 IAM Identity Center 인증을 사용하여 자격 증명을 확인하려면 활성 AWS 액세스 포털 세션이 AWS 서비스필요합니다. 구성된 세션 길이에 따라 결국 액세스가 만료되고 SDK에 인증 오류가 발생합니다. AWS 액세스 포털에 로그인하려면에서 다음 명령을 실행합니다 AWS CLI.

```
aws sso login
```

기본 프로필이 설정되어 있으므로 `--profile` 옵션으로 명령을 호출할 필요가 없습니다. SSO 토큰 공급자 구성에서 명명된 프로필을 사용하는 경우 `aws sso login --profile named-profile` 명령을 사용합니다.

이미 활성 세션이 있는지 테스트하려면 다음 AWS CLI 명령을 실행합니다.

```
aws sts get-caller-identity
```

이 명령에 대한 응답은 공유 `config` 파일에 구성된 IAM Identity Center 계정 및 권한 집합을 보고해야 합니다.

**참고**  
이미 활성 AWS 액세스 포털 세션이 있고를 실행하는 경우 `aws sso login`자격 증명을 제공할 필요가 없습니다.  
로그인 프로세스에서 데이터에 대한 AWS CLI 액세스를 허용하라는 메시지가 표시될 수 있습니다. AWS CLI 는 SDK for Python을 기반으로 구축되므로 권한 메시지에 `botocore` 이름의 변형이 포함될 수 있습니다.

## 세부 인증 정보
<a name="credother"></a>

인간 사용자(*인간 ID*라고도 함)는 애플리케이션의 사용자, 관리자, 개발자, 운영자 및 소비자입니다. AWS 환경 및 애플리케이션에 액세스하려면 자격 증명이 있어야 합니다. 조직의 구성원인 인간 사용자는 *작업 인력 ID*라고도 하며, 이는 개발자인 사용자를 의미합니다. 에 액세스할 때 임시 자격 증명을 사용합니다 AWS. 인간 사용자의 자격 증명 공급자를 사용하여 임시 자격 증명을 제공하는 역할을 수임하여 AWS 계정에 대한 페더레이션 액세스를 제공할 수 있습니다. 중앙 집중식 액세스 관리를 위해 AWS IAM Identity Center (IAM Identity Center)를 사용하여 계정에 대한 액세스와 해당 계정 내의 권한을 관리하는 것이 좋습니다. 더 많은 대안을 보려면 다음을 참조하세요.
+ 모범 사례에 대해 자세히 알아보려면 **IAM 사용 설명서에서 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.
+ 단기 AWS 자격 증명을 생성하려면 *IAM 사용 설명서*의 [임시 보안 자격 증명을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html).
+ 다른 AWS SDK for C\$1\$1 자격 증명 공급자에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 [표준화된 자격 증명 공급자](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)를 참조하세요. *AWS SDKs *

# 소스 코드 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).

# 패키지 관리자 AWS SDK for C\$1\$1 에서 가져오기
<a name="sdk-from-pm"></a>

**중요**  
homebrew 또는 vcpkg 등의 패키지 관리자를 사용하는 경우:  
SDK for C\$1\$1를 새 버전으로 업데이트한 후에는 SDK에 의존하는 라이브러리 또는 실행 파일을 다시 컴파일해야 합니다.

를 설정하려면 소스에서 직접 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 빌드가 실패할 수 있습니다.

------
#### [ Linux/macOS ]

Linux/macOS AWS SDK for C\$1\$1 에서를 사용하려면 다음 중 하나가 필요합니다.
+  GNU Compiler Collection(GCC) 4.9 이상
+  Clang 3.3 이후 버전

------
#### [ Windows ]

Windows AWS SDK for C\$1\$1 에서를 사용하려면 다음 중 하나가 필요합니다.
+ Microsoft Visual Studio 2015 이후 버전 
+  GNU Compiler Collection(GCC) 4.9 이상
+  Clang 3.3 이후 버전

------

## vcpkg를 사용하여 SDK 가져오기
<a name="setupwin-with-vcpkg"></a>

**중요**  
사용 가능한 vcpkg 배포는 외부 기여자가 지원하며를 통해 제공되지 않습니다 AWS. [소스에서 설치](sdk-from-source.md)하면 항상 최신 버전을 사용할 수 있습니다.

[vcpkg](https://github.com/Microsoft/vcpkg)은 외부 기여자들이 업데이트하고 유지 관리하는 패키지 관리자입니다. 이 패키지 관리자는를 통해 제공되지 않으며 AWS 에 사용할 수 있는 최신 버전을 반영하지 않을 수 있습니다 AWS SDK for C\$1\$1. 에서 버전을 릴리스하는 시점 AWS 과 외부 패키지 관리자를 통해 버전을 사용할 수 있는 시점 사이에는 지연이 있습니다. [소스에서 설치](sdk-from-source.md)하면 항상 최신 버전을 사용할 수 있습니다.

시스템에 [vcpkg](https://github.com/Microsoft/vcpkg)를 설치해야 합니다.
+ [vcpkg](https://github.com/Microsoft/vcpkg) GitHub Readme의 지침에 따라 vcpkg를 다운로드하고 부트스트랩합니다. 메시지가 표시되면 다음 옵션을 대체합니다.
  + 

    이러한 지침의 일부로 다음을 입력하도록 안내됩니다.

    ```
    .\vcpkg\vcpkg install [packages to install]
    ```

    전체 SDK를 설치하려면 `.\vcpkg\vcpkg install "aws-sdk-cpp[*]" --recurse`를 입력하거나, 설치할 SDK의 특정 서비스만 지정하려면 괄호 안에 패키지 이름을 추가합니다(예: `.\vcpkg\vcpkg install "aws-sdk-cpp[s3, ec2]" --recurse`).

  출력에는 다음과 같은 메시지가 표시됩니다.

  ```
  CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake"
  ```
+ 나중에 CMake에 사용할 수 있도록 전체 `-DCMAKE_TOOLCHAIN_FILE` 명령을 복사합니다. vcpkg GitHub Readme에는 이 명령을 도구 세트에서 사용할 위치도 안내되어 있습니다.
+ vcpkg를 통해 설치한 빌드 구성 유형을 기록해 두어야 할 수도 있습니다. 콘솔 출력에는 빌드 구성과 SDK 버전이 표시됩니다. 다음 예제 출력은 빌드 구성이 "x86-windows"이고 설치된 AWS SDK for C\$1\$1 버전이 1.8임을 나타냅니다.

  ```
  The following packages will be built and installed:
      aws-sdk-cpp[core,dynamodb,kinesis,s3]:x86-windows -> 1.8.126#6
  ```

를 설치한 후 SDK를 사용하여 자체 애플리케이션을 개발할 AWS SDK for C\$1\$1수 있습니다. [샘플 애플리케이션 만들기](build-cmake.md)에 표시된 예제에서는 사용자가 소유한 Amazon S3 버킷을 보고합니다.

# AWS SDK for C\$1\$1 빌드 문제 해결
<a name="troubleshooting-cmake"></a>

소스 AWS SDK for C\$1\$1 에서를 빌드할 때 다음과 같은 일반적인 빌드 문제 중 일부가 발생할 수 있습니다.

**Topics**
+ [

## CMake 오류: "AWSSDK"에서 제공하는 패키지 구성 파일을 찾을 수 없음
](#could-not-find-package)
+ [

## CMake 오류: 로드 파일을 찾을 수 없음(SDK 버전 1.8 사용 중)
](#could-not-load-file)
+ [

## CMake 오류: 로드 파일을 찾을 수 없음
](#could-not-load-file2)
+ [

## 런타임 오류: `aws-*.dll`을 찾을 수 없어 진행할 수 없음
](#dll-was-not-found)

## CMake 오류: "AWSSDK"에서 제공하는 패키지 구성 파일을 찾을 수 없음
<a name="could-not-find-package"></a>

설치된 SDK를 찾을 수 없는 경우 CMake에서 다음 오류가 발생합니다.

```
1> [CMake] CMake Error at C:\CodeRepos\CMakeProject1\CMakeLists.txt:4 (find_package):
1> [CMake]   Could not find a package configuration file provided by "AWSSDK" with any
1> [CMake]   of the following names:
1> [CMake] 
1> [CMake]     AWSSDKConfig.cmake
1> [CMake]     awssdk-config.cmake
1> [CMake] 
1> [CMake]   Add the installation prefix of "AWSSDK" to CMAKE_PREFIX_PATH or set
1> [CMake]   "AWSSDK_DIR" to a directory containing one of the above files.  If "AWSSDK"
1> [CMake]   provides a separate development package or SDK, be sure it has been
1> [CMake]   installed.
```

이 오류를 해결하려면 설치된 SDK(예: [Windows](setup-windows.md), [Linux/macOS](setup-linux.md) 등 SDK 설치 결과로 생성된 폴더)를 찾을 수 있는 위치를 CMake에 알립니다. `CMakeLists.txt` 파일에서 `find_package()`의 첫 번째 직접 호출 앞에 다음 명령을 삽입합니다. 예제는 [AWS SDK for C\$1\$1를 사용하여 간단한 애플리케이션 생성](build-cmake.md) 섹션을 참조하세요.

```
list(APPEND CMAKE_PREFIX_PATH "C:\\Program Files (x86)\\aws-cpp-sdk-all\\lib\\cmake")
```

## CMake 오류: 로드 파일을 찾을 수 없음(SDK 버전 1.8 사용 중)
<a name="could-not-load-file"></a>

설치된 라이브러리를 찾을 수 없는 경우 CMake에서 다음 오류가 발생합니다.

```
1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake

1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-checksums/cmake/static/aws-checksums-targets.cmake
1> [CMake]   include could not find load file:
1> [CMake] 
1> [CMake]     C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-checksums/cmake/static/aws-checksums-targets.cmake
```

이 오류를 해결하려면 설치된 SDK(예: [Windows](setup-windows.md), [Linux/macOS](setup-linux.md) 등 SDK 설치 결과로 생성된 폴더)를 찾을 수 있는 위치를 CMake에 알립니다. `CMakeLists.txt` 파일에서 `find_package()`의 첫 번째 호출 앞에 다음 명령을 삽입합니다. 예제는 [AWS SDK for C\$1\$1를 사용하여 간단한 애플리케이션 생성](build-cmake.md) 섹션을 참조하세요.

```
#Set the location of where Windows can find the installed libraries of the SDK.
if(MSVC)
    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()
```

이러한 종속성은 이후 버전에서 다르게 처리되므로 이 솔루션은 SDK v1.8에만 해당됩니다. 버전 1.9에서는 `aws-sdk-cpp` 및 `aws-c-*` 라이브러리 사이에 중간 계층을 도입하여 이러한 문제를 해결합니다. 이 새 계층을 `aws-crt-cpp`라고 하며, SDK for C\$1\$1의 git 하위 모듈입니다. `aws-crt-cpp`에는 `aws-c-*` 라이브러리(`aws-c-common`, `aws-checksums`, ` aws-c-event-stream` 등 포함)도 자체 git 하위 모듈로 포함되어 있습니다. 이를 통해 SDK for C\$1\$1는 모든 CRT 라이브러리를 재귀적으로 가져오고 빌드 프로세스를 개선할 수 있습니다.

## CMake 오류: 로드 파일을 찾을 수 없음
<a name="could-not-load-file2"></a>

설치된 라이브러리를 찾을 수 없는 경우 CMake에서 다음 오류가 발생합니다.

```
CMake Error at C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-auth/cmake/aws-c-auth-config.cmake:11 
         (include):  include could not find load file:   
         C:/Program Files (x86)/aws-cpp-sdk-all/lib/aws-c-auth/cmake/static/aws-c-auth-targets.cmake
```

이 오류를 해결하려면 공유 라이브러리를 빌드하도록 CMake에 요청합니다. `CMakeLists.txt` 파일에서 `find_package()`의 첫 번째 직접 호출 앞에 다음 명령을 삽입합니다. 예제는 [AWS SDK for C\$1\$1를 사용하여 간단한 애플리케이션 생성](build-cmake.md) 섹션을 참조하세요.

```
set(BUILD_SHARED_LIBS ON CACHE STRING "Link to shared libraries by default.")
```

## 런타임 오류: `aws-*.dll`을 찾을 수 없어 진행할 수 없음
<a name="dll-was-not-found"></a>

CMake는 필요한 DLL을 찾을 수 없는 경우 다음과 유사한 오류를 발생시킵니다.

```
The code execution cannot proceed because aws-cpp-sdk-[dynamodb].dll was not found. Reinstalling the program may fix this problem.
```

이 오류는 SDK for C\$1\$1에 필요한 라이브러리 또는 실행 파일을 애플리케이션 실행 파일과 동일한 폴더에서 사용할 수 없기 때문에 발생합니다. 이 오류를 해결하려면 SDK 빌드 출력을 실행 파일 위치에 복사합니다. 오류의 특정 DLL 파일 이름은 사용 중인 AWS 서비스에 따라 달라집니다. 다음 중 *하나*를 수행합니다.
+  AWS SDK for C\$1\$1 설치 `/bin` 폴더의 내용을 애플리케이션의 빌드 폴더에 복사합니다.
+ `CMakeLists.txt` 파일에서 AWSSDK\$1CPY\$1DYN\$1LIBS 매크로를 사용하여 이들을 복사합니다.

  이 매크로를 사용하여 복사를 수행하려면 `AWSSDK_CPY_DYN_LIBS(SERVICE_LIST "" ${CMAKE_CURRENT_BINARY_DIR})` 또는 `AWSSDK_CPY_DYN_LIBS(SERVICE_LIST "" ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE})`에 대한 직접 호출을 `CMakeLists.txt` 파일에 추가합니다. 예제는 [AWS SDK for C\$1\$1를 사용하여 간단한 애플리케이션 생성](build-cmake.md) 섹션을 참조하세요.

  빌드 환경에 맞는 올바른 복사 경로를 선택합니다. 명령줄을 통해 빌드하면 빌드 출력이 하위 폴더(`/Debug`)에 저장되는 경우가 많지만 Visual Studio 및 기타 IDE를 사용하면 그렇지 않은 경우가 많습니다. 출력 실행 파일의 위치를 확인하고 매크로가 해당 위치로 복사하고 있는지 확인합니다. 이러한 유형의 변경을 수행할 때는 다음 빌드의 시작점을 확보할 수 있도록 빌드 출력 디렉터리의 내용을 삭제하는 것이 좋습니다.