一、獲取protobuf及相關依賴c++
新建install_protobuf.bat腳本,粘貼如下代碼git
::參考文章 https://github.com/google/protobuf/blob/master/cmake/README.md ::默認當前操做系統已安裝 git 和 cmake,並配置好了環境變量 echo off & color 0A ::設置所須要的Protobuf版本,最新版本能夠在github上查到 https://github.com/google/protobuf set PROTOBUF_VESION="v3.3.0" echo %PROTOBUF_VESION% set PROTOBUF_PATH="protobuf_%PROTOBUF_VESION%" echo %PROTOBUF_PATH% ::從githug上拉取protobuf源代碼 git clone -b %PROTOBUF_VESION% https://github.com/google/protobuf.git %PROTOBUF_PATH% ::從github上拉取gmock cd %PROTOBUF_PATH% git clone -b release-1.7.0 https://github.com/google/googlemock.git gmock ::從github上拉取gtest cd gmock git clone -b release-1.7.0 https://github.com/google/googletest.git gtest pause
二、編譯github
新建build_protobuf.bat腳本,粘貼如下代碼服務器
::參考文章 https://github.com/google/protobuf/blob/master/cmake/README.md ::默認當前操做系統已安裝 git 和 cmake,並配置好了環境變量 echo off & color 0A ::設置所須要的Protobuf版本,最新版本能夠在github上查到 https://github.com/google/protobuf ::必須與下載的版本一致 set PROTOBUF_VESION="v3.3.0" echo %PROTOBUF_VESION% set PROTOBUF_PATH="protobuf_%PROTOBUF_VESION%" echo %PROTOBUF_PATH% cd %PROTOBUF_PATH% ::設置VS工具集,至關於指定VS版本,取決於VS的安裝路徑 set VS_DEV_CMD="D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\VsDevCmd.bat" ::設置工程文件夾名字,用來區分不一樣的VS版本 set BUILD_PATH="build_vs2013" ::設置編譯版本 Debug Or Release set MODE="Release" cd cmake if not exist %BUILD_PATH% md %BUILD_PATH% cd %BUILD_PATH% if not exist %MODE% md %MODE% cd %MODE% ::開始構建和編譯 call %VS_DEV_CMD% cmake ../../ -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%MODE% call extract_includes.bat nmake /f Makefile echo %cd% pause
編譯完成,咱們獲得protobuf可執行文件工具
三、下面咱們來編寫protoui
// 指定語法規則 proto2 or proto3,不寫的話會有警告,默認使用proto2語法規則 syntax = "proto2"; enum MSGID_XXXSERVER // 定義消息ID { MSGID_CS_REQ_Login = 0x0100; MSGID_CS_RESP_Login = 0x0200; MSGID_CS_NOTI_Login = 0x0300; } message LoginReq // 登陸請求 { optional int32 roleID = 1; optional string usrName = 2; optional int32 passWd = 3; } message LoginResp // 登陸響應 { optional int32 roleID = 1; optional int32 errCode = 2; optional RoleInfo roleInfo = 3; } message LoginNoti //登陸通知 { optional int32 roleID = 1; optional RoleInfo roleInfo = 2; }
message RoleInfo // 角色信息 { optional int32 roleID = 1; optional string name = 2; optional int32 age = 3; optional int32 sex = 4; }
四、根據proto生成c++代碼google
新建gen.bat腳本,粘貼如下代碼spa
@echo off & color 0A :: protoc程序名 set "PROTOC_EXE=protobuf_v3.3.0\cmake\build_vs2013\Release\protoc.exe" :: .proto文件名 set "PROTOC_FILE_NAME=test.proto" set "PROTOC_PATH=%cd%" set "CPP_OUT_PATH=%cd%" ::生成.h和.cc "%PROTOC_PATH%\%PROTOC_EXE%" --proto_path="%PROTOC_PATH%" --cpp_out="%CPP_OUT_PATH%" "%PROTOC_PATH%\%PROTOC_FILE_NAME%" pause
咱們獲得下面兩個c++文件操作系統
五、定義消息管理類,根據MSGID分發消息code
六、如客戶端服務器使用不一樣語言,能夠生成相應語言的protobuf