protobuf란 google이 만든 언어와 플랫폼에 중립적(모두 사용가능하다는 뜻)이며 확장성 있는 구조화된 데이터를 

 직렬화하기 위한 방법입니다. (마치 XML과 비슷하지만 작고, 빠르고 간단합니다.)

 사용자는 .proto 파일을 한번만 생성하면 언어와 플랫폼 제한없이 손쉽게 사용 할 수 있습니다.

https://developers.google.com/protocol-buffers

 

Protocol Buffers  |  Google Developers

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.

developers.google.com

설치 준비 작업

vcpkg 설치 하기

 vcpkg의 설치와 사용방법은 아래 글을 통해서 확인 하시길 바랍니다. 

https://jungwoong.tistory.com/77

 

[Tool] vcpkg 설치 및 사용법

vcpkg란 vcpkg는 Windows linux와 MacOs 에서 C와 C++ 라이브러리 관리를 도와줍니다. 자세한 설명은 아래의 링크를 통해서 알 수 있습니다. https://docs.microsoft.com/ko-kr/cpp/build/vcpkg?view=vs-2019 vcpk..

jungwoong.tistory.com

protobuf 라이브러리 설치

vcpkg를 통한 라이브러리 빌드

vcpkg install protobuf:x64-windows

 vcpkg를 통해서 64비트의 protobuf 라이브러리를 설치합니다.

vcpkg list

 vcpkg list명령어를 통해서 설치가 되었는지 확인 한 후에 "vcpkg\installed\x64-windows" 폴더로 이동해보면

 protobuf 라이브러리가 추가된 것을 확인 할 수 있습니다.

CMake를 통한 라이브러리 빌드

  Window용 CMake를 설치합니다.

링크 : https://cmake.org/download/  

protoc 설치

 protoc란 .proto파일을 다양한 플랫폼의 소스파일로 컴파일을 하기 위한 도구입니다. 

https://github.com/protocolbuffers/protobuf/releases

 

protocolbuffers/protobuf

Protocol Buffers - Google's data interchange format - protocolbuffers/protobuf

github.com

로 이동해서 최신버전의 protoc를 다운받습니다. 

protoc 다운받기

해당 zip파일을 다운받은 뒤에 설치할 곳에 압축을 풉니다.

필자는 "C:\protoc"에 설치 하였습니다. 설치한 경로의 bin폴더로 가보면 protoc.exe가 있습니다.

protoc를 편하게 실행하기 위해서 환경변수 path에 등록해줍니다. 필자는 "C:\protoc\bin"를 등록하였습니다.

그런 후 명령 프롬프트를 실행하시고 "protoc --version"을 실행하시면 설치된 것을 확인 할 수 있습니다.

설치 완료

여기까지 진행 하셧으면 protobuf를 사용하기 위한 모든 준비를 마쳤습니다. 

proto파일 생성후 컴파일

syntax = "proto3";
package examchatserverPacket;

message C2SPCLoginUserReq {
  string UserID = 1;
}

message S2CPCLoginUserRes {
  uint32  Result = 1;
  uint32  UserSn = 2;
  string  UserID = 3;
}

 Login 패킷을 구조체를 표현한 LogicPacket.proto 파일을 통해서 예제를 설명 드립니다. 

 아래 예제와 같은 bat파일을 통해서 LogicPacket.proto파일을 컴파일 하도록 셋팅했습니다.

set CURRENT_PATH=%~dp0
echo %CURRENT_PATH%

protoc -I%CURRENT_PATH% --cpp_out=%CURRENT_PATH% %CURRENT_PATH%LogicPacket.proto

 예제의 protoc 명령에 대해서 간단히 설명 드리면

 -I옵션은 proto파일을 검색할 경로를 지정합니다. 

 --cpp_out 옵션은 proto파일을 cpp로 변환시켜주고 뒤에 생성 위치를 지정합니다. 

 아래와 그림과 같이 다양한 플랫폼의 소스파일을 생성할 수 있습니다.

 더 자세한 내용을 알고 싶으시면 명령 프롬프트에서 protoc 명령을 입력하시면 사용법에 대해서 알 수 있습니다. 

make cc, h파일

 위 bat 파일을 실행 시키면 그림과 같이 cc와 h파일이 생성됩니다. 해당 파일을 프로젝트에 추가해서 

 사용하면 됩니다.

visual studio 라이브러리 설정

 protoc를 통해서 생성된 cc파일과 h파일은 protobuf 라이브러리를 사용하기 때문에 프로젝트에 

 protobuf 라이브러리를 추가 해야 합니다.

라이브러리 경로 추가

 

추가할 곳  
포함 디렉터리

"vcpkg\installed\x64-windows\include" 등록하거나

해당 폴더를 복사해서 사용자가 사용할 Library폴더로 이동해도 됩니다.

라이브러리 디렉터리

debug : vcpkg\installed\x64-windows\debug\lib

release : "vcpkg\installed\x64-windows\lib"

해당 폴더를 복사해서 사용자가 사용할 Library폴더로 이동해도 됩니다.

라이브러리 추가 

디버그의 경우 libprotobufd.lib 추가 

릴리지의 경우 libprotobuf.lib 추가

 

모든 작업을 완료 하신 후에 빌드하시면 protobuf를 사용하실 수 있습니다.

'protobuf' 카테고리의 다른 글

[protobuf] GoLang에서 protobuf 사용하기  (0) 2020.05.04

+ Recent posts