티스토리 뷰
지난 포스팅에서 구글 프로토콜 버퍼에 대해서 간략히 알아보았습니다.
직접 구글 프로토콜 버퍼를 사용해보기 위해서 발품 팔았지만, 정보가 생각보다 쉽게 나오지 않아서 설치하면서 얻은 경험을 바탕으로 포스팅하고자 합니다.
설치
다운로드
먼저 구글 프로토콜 버퍼 패키지를 다운 받아야 합니다. 링크는 다음과 같습니다 :
https://github.com/protocolbuffers/protobuf/releases/tag/v3.11.4
들어가시면 다음과 같은 그림을 볼 수 있습니다.
이 중에서 자신이 사용하고자 하는 언어의 패키지를 다운 받으시면 됩니다. 제 경우 cpp로 사용하고자 했으므로, cpp를 다운 받았습니다.
이후, 압축을 풀면, 다음과 같이 파일이 압축 해제되는데 여기서 눈 여겨 봐야할 것이 cmake 디렉토리랑 src 디렉토리입니다. 솔루션 빌드를 위해서 저희는 cmake를 사용할 것입니다.
cmake 사용하여 빌드하기
이제 다음 링크로 들어가서 cmake를 설치하시면 됩니다. cmake를 설치하면 다음과 같은 앱 아이콘을 만나보실 수 있습니다.
cmake로 들어가면 다음과 같은 ui를 보실 수 있습니다.
여기서 다음과 같이 설정해 주시면 됩니다 :
- Where is the source code : protobuf의 cmake 폴더를 지정해주시면 됩니다.
- *_Where to build the binaries : *_cmake가 생성한 솔루션을 저장할 위치를 지정해주시면 됩니다.
이후, Configure 버튼을 누르면 다음과 같이 나타납니다.
이 상태에서 Generate 버튼을 누르면 다음과 같이 Generating Done이 뜨면서 솔루션이 생성됩니다.
라이브러리 프로젝트 빌드하기
이후, 빌드된 디렉토리로 가면 다음과 같이 visual studio 솔루션과 프로젝트 파일들이 존재하는데 솔루션 파일로 들어갑니다.
그러면 다음과 같이 솔루션 탐색기가 나타나는데, ALL_BUILD 프로젝트에서 빌드를 수행하시면 됩니다. 이 때, 디버깅으로 사용하실 꺼면 구성 관리자를 Debug 모드로, 릴리즈에서 사용하실 꺼면 구성 관리자를 Release 모드로 설정해주신 후 빌드를 하셔야 합니다.
이후 12개의 프로젝트 빌드가 완료되면, 다음과 같이 라이브러리 및 바이너리 실행 파일로 빌드된 것을 확인하실 수 있습니다.
여기서 사용할 것은 다음과 같습니다 :
- 공통 : 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 위치를 지정해주시면 됩니다.
이후, 링커 - 입력에서 추가 종속성에 해당 라이브러리를 추가합니다.
다음은 include를 위한 include 파일 지정입니다. 이것은 제일 처음에 다운 받았던 protobuf 패키지 파일에서 src를 지정해 주시면 됩니다.
여기를 지정하고 사용하시면 다음과 같이 인텔리센스가 반응하는 것을 볼 수 있습니다.
만약 빌드 시에 다음과 같이 에러가 출력된다면
프로젝트 관리자에서 'C/C++ - 코드 생성 - 런타임 라이브러리를' 맞는 값으로 맞춰주시면 됩니다. 제 경우, 다중 스레드 디버그로 변경하기 빌드되는 것을 확인할 수 있었습니다.
참고로 간단한 제 소스코드는 다음을 출력합니다!
그럼 이제 사용하시면 되겠습니다.
참고자료
참고문헌
'개발 > Miscellaneous' 카테고리의 다른 글
오픈 소스 가이드 (0) | 2023.06.04 |
---|---|
C언어 포맷 지정자 모아보기(list of all C fomat-specifier) (0) | 2022.10.13 |
구글 프로토콜 버퍼(Google protocol buffer) (0) | 2020.05.13 |
객체 지향적 관점에서의 has-a와 is-a 차이점 (1) | 2020.05.04 |
struct sigaction 불완전한 형식 에러(incomplete type error) (0) | 2020.05.02 |
- Total
- Today
- Yesterday
- C++
- C# lambda expression
- c++ 핫 리로드
- 구글테스트
- 언리얼 엔진
- C++ Compile error
- C# 익명함수
- 행렬
- C# 람다식
- Auto
- visual studio 핫 리로드
- C7568
- code copyright
- game hot reload
- Perforce Streams
- 구간합
- 퍼포스 스트림
- MSVC C1083
- UE4
- c++ hot reload
- Perforce Stream
- 알고리즘
- P4 Stream
- visual studio hot reload
- P4 Streams
- DXGI
- 퍼포스 개요
- 코드 저작권
- Visual Studio C1083
- GoogleTest
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |