티스토리 뷰

지난 포스팅에서 구글 프로토콜 버퍼에 대해서 간략히 알아보았습니다.

직접 구글 프로토콜 버퍼를 사용해보기 위해서 발품 팔았지만, 정보가 생각보다 쉽게 나오지 않아서 설치하면서 얻은 경험을 바탕으로 포스팅하고자 합니다.

설치


다운로드

먼저 구글 프로토콜 버퍼 패키지를 다운 받아야 합니다. 링크는 다음과 같습니다 :
https://github.com/protocolbuffers/protobuf/releases/tag/v3.11.4

들어가시면 다음과 같은 그림을 볼 수 있습니다.

그림 1. 구글 프로토콜 버퍼 github 패키지 

이 중에서 자신이 사용하고자 하는 언어의 패키지를 다운 받으시면 됩니다. 제 경우 cpp로 사용하고자 했으므로, cpp를 다운 받았습니다.

 

이후, 압축을 풀면, 다음과 같이 파일이 압축 해제되는데 여기서 눈 여겨 봐야할 것이 cmake 디렉토리랑 src 디렉토리입니다. 솔루션 빌드를 위해서 저희는 cmake를 사용할 것입니다.

그림 2. protobuf 압축해제 모습

 

 

cmake 사용하여 빌드하기

이제 다음 링크로 들어가서 cmake를 설치하시면 됩니다. cmake를 설치하면 다음과 같은 앱 아이콘을 만나보실 수 있습니다.

그림 3. cmake

 

cmake로 들어가면 다음과 같은 ui를 보실 수 있습니다.

그림 4. cmake gui

 

여기서 다음과 같이 설정해 주시면 됩니다 :

  • Where is the source code : protobuf의 cmake 폴더를 지정해주시면 됩니다.
  • *_Where to build the binaries : *_cmake가 생성한 솔루션을 저장할 위치를 지정해주시면 됩니다.

 

이후, Configure 버튼을 누르면 다음과 같이 나타납니다.

그림 5. cmake configure

 

이 상태에서 Generate 버튼을 누르면 다음과 같이 Generating Done이 뜨면서 솔루션이 생성됩니다.

그림 6. cmake generate 결과

 

 

라이브러리 프로젝트 빌드하기

이후, 빌드된 디렉토리로 가면 다음과 같이 visual studio 솔루션과 프로젝트 파일들이 존재하는데 솔루션 파일로 들어갑니다.

그림 6. cmake가 생성한 솔루션

 

그러면 다음과 같이 솔루션 탐색기가 나타나는데, ALL_BUILD 프로젝트에서 빌드를 수행하시면 됩니다. 이 때, 디버깅으로 사용하실 꺼면 구성 관리자를 Debug 모드로, 릴리즈에서 사용하실 꺼면 구성 관리자를 Release 모드로 설정해주신 후 빌드를 하셔야 합니다.

그림 7. protobuf 솔루션 프로젝트 리스트
그림 8. 구성 관리자 설정

 

이후 12개의 프로젝트 빌드가 완료되면, 다음과 같이 라이브러리 및 바이너리 실행 파일로 빌드된 것을 확인하실 수 있습니다.

그림 9. 솔루션 빌드로 생성된 결과물

 

여기서 사용할 것은 다음과 같습니다 :

  • 공통 : protoc.exe (프로토버퍼 컴파일러)
  • Debug : libprotobufd.lib
  • Release : libprotobuf.lib

 

 

protobuf 컴파일러로 컴파일하기

이제 다시 여러분들의 프로젝트로 돌아갑니다. 제 프로젝트에는 전 포스팅에서 봤던 addressbook.proto 파일 하나와 빈 함수 본문을 가진 main.cpp 밖에 없습니다.

 

우선 편의를 위해 proto파일에 있는 곳에 protoc 컴파일러 실행 파일을 옮겨줍니다.

 

이후, cmd 환경에서 protoc 파일을 다음과 같이 구동시킵니다.

(protoc.exe가 있는 디렉토리에서) protoc --cpp_out=. [대상 proto 파일]

 

여기서 protoc.exe 위치를 달리하여 입력할 파일 소스 디렉터리를 지정할 수 있지만, 커맨드양을 줄이기 위해 같은 위치에 배치하였으니, 자세한 사항은 protoc 컴파일 옵션을 살펴보시길 추천합니다.

 

 

라이브러리 링크 / include 추가하기

이후, 생성된 pb.cc / pb.h를 볼 수 있으며, 이것들을 사용하기 위해서 lib 및 include를 추가해 줘야 합니다. 먼저, 라이브러리부터 손보겠습니다. 라이버르러리 디렉토리는 libprotobufd.lib 또는 libprotobuf.lib 위치를 지정해주시면 됩니다.

그림 14. 라이브러리 디렉토리 추가

 

이후, 링커 - 입력에서 추가 종속성에 해당 라이브러리를 추가합니다.

그림 15. 라이브러리 추가 종속성 

 

다음은 include를 위한 include 파일 지정입니다. 이것은 제일 처음에 다운 받았던 protobuf 패키지 파일에서 src를 지정해 주시면 됩니다.

그림 16. 기억하시죠? 처음 받았던 파일의 src 디렉토리가 있습니다.

 

여기를 지정하고 사용하시면 다음과 같이 인텔리센스가 반응하는 것을 볼 수 있습니다.

그림 17. 생성된 프로토파일을 include하여 사용하는 모습

 

만약 빌드 시에 다음과 같이 에러가 출력된다면

그림 18. 런타임 라이브러리 미스매치로 인한 에러

프로젝트 관리자에서 'C/C++ - 코드 생성 - 런타임 라이브러리를' 맞는 값으로 맞춰주시면 됩니다. 제 경우, 다중 스레드 디버그로 변경하기 빌드되는 것을 확인할 수 있었습니다.

그림 19. 런타임 라이브러리 수정

 

참고로 간단한 제 소스코드는 다음을 출력합니다!

그림 20. 출력 결과

 

그럼 이제 사용하시면 되겠습니다.

 

 

 

참고자료


참고문헌

댓글