이번에 C++로 AWS SDK를 사용할 일이 생겼습니다. 매우 오래된 구식 프로그램이라 AWS SDK를 지원하지 않아 VC100에서 먼저 업그레이드해야 할 상황이 닥쳤습니다. 한참을 끙끙대며 업그레이드하고 나니 C#과는 달리 C++에서는 직접 소스를 빌드해 SDK를 사용해야 한답니다. C#처럼 Nuget을 이용할 수 있을 줄 알았는데... 아무튼 이번 글에서는 C++에서 AWS SDK를 사용할 수 있는 방법에 대해 알아보도록 하겠습니다.
Nuget 패키지 관리자로 검색해보면 AWSSDKCPP라는 이름의 패키지가 존재하긴 합니다. 하지만 글 쓸 당시 aws-sdk-cpp GitHub에서는 1.8 버전이 릴리즈 되었지만 Nuget에서는 1.6 버전이 최신이었습니다. 따라서 이 글에선 CMake를 이용해 C++용 AWS SDK를 직접 빌드해 사용하는 방법에 대해 알아보도록 하겠습니다.
0. 요구사항.
C++용 AWS SDK를 사용하기 위한 요구사항은 다음과 같습니다.
- VisualStudio 2015 또는 그 이상.
- GNU Compiler Collection(GCC) 4.9 또는 그 이상.
- CLang 3.3 또는 그 이상
- 4GB의 메모리(큰 규모의 클라이언트 구축을 위해서 필요합니다. 메모리 부족으로 인해 SDK 빌드가 실패할 수도 있습니다.)
사전 요구사항을 확인한 후 빌드를 준비합니다.
1. CMake 준비
프로젝트 빌드를 위해 CMake를 미리 설치해야 합니다. CMake 페이지로 이동해 빌드할 플랫폼에 맞는 CMake를 설치해 준비합니다.
2. 프로젝트 코드 다운로드.
aws-sdk-cpp GitHub 페이지로 이동해 소스코드를 다운로드합니다.
Github 페이지 우측 상단에 Zip으로 다운로드하기가 있습니다. 원하는 버전의 전체 소스코드를 다운로드하여 압축을 풀어 주세요. 전 1.8.118 버전을 다운로드하여 D:\Dev\aws-sdk-cpp-1.8.118 폴더에 압축을 풀어주었습니다.
3. 솔루션 및 프로젝트 생성
이제 CMake를 실행시켜 프로젝트를 만들어줍니다. BrowseSource 버튼을 클릭해 코드가 위치한 폴더를 선택합니다. BrowseBuild 버튼을 클릭해 CMake 결과물이 위치할 폴더를 선택합니다.
전 위와 같이 설정해 줬습니다. 폴더를 설정해 준 뒤 Configure 버튼을 클릭합니다. CMake가 선택한 Source폴더를 확인해 자동으로 설정을 구성합니다. Configure 버튼을 클릭하면 생성될 프로젝트를 설정할 수 있는 창이 보입니다. 원하는 대로 선택해 줍니다.
원하는 대로 설정 후 Finish 버튼을 클릭하면 구성을 시작합니다. 아래의 텍스트 박스에 진행상황에 대한 로그가 같이 남습니다. 느긋이 기다려 주도록 합니다.
작업이 완료되면 가운데 구성 설정 목록이 나타납니다. 또한 앞서 설정한 빌드 폴더로 가보면 프로젝트 생성에 필요한 파일이 복사되어 있는 것을 확인할 수 있습니다.
원하는 설정이 있다면 여기서 변경해 주시면 됩니다. 일단 CMake가 생성한 기본값을 갖고 솔루션과 프로젝트를 생성해 보도록 하겠습니다. 설정이 끝나면 Generate 버튼을 클릭해 주세요.
잠시 기다리면 "Generating done" 메시지와 함께 솔루션 및 프로젝트 생성이 종료됩니다. 이후 앞서 설정한 binaries 폴더인 Build 폴더에 들어가면 C++ 솔루션이 생성되어 있습니다. 이제 솔루션으로 프로젝트를 빌드 해 AWS SDK를 사용할 수 있습니다.
'Programming > C++' 카테고리의 다른 글
[AWSSDKCPP] Assertion Failed! aws-cpp-sdk-core.dll - s_HttpClientFactory (0) | 2021.02.01 |
---|---|
[AWSSDKCPP] Aws::MakeShared 에러 (0) | 2021.01.28 |
[C++] Error: LNK1117 'VERSION: 1.0.0.0' 옵션에 구문 오류가 있습니다. (0) | 2020.11.19 |
[C++] Convert CStirng to const char* (0) | 2020.05.20 |
[C++] DCMTK - Generate UID (0) | 2018.05.11 |