

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

# 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를 사용하면 그렇지 않은 경우가 많습니다. 출력 실행 파일의 위치를 확인하고 매크로가 해당 위치로 복사하고 있는지 확인합니다. 이러한 유형의 변경을 수행할 때는 다음 빌드의 시작점을 확보할 수 있도록 빌드 출력 디렉터리의 내용을 삭제하는 것이 좋습니다.