c++使用protobuf文件生成pb.h和pb.cc

简介

protobuf可以用于描述数据结构,可以用于序列化和反序列化,并且适用于多平台的扩展,是比较好的数据描述平台。

操作
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
PROJECT (cppTest)
SET(SRC_LIST main.cc)

set(proto_dir ${PROJECT_SOURCE_DIR}/proto)
file(GLOB proto_files "${proto_dir}/*.proto")
message(STATUS "Proto Source Dir: ${proto_dir}")
message(STATUS "Proto Source Files: ${proto_files}")

#Find required protobuf package
find_package(Protobuf REQUIRED)
if(PROTOBUF_FOUND)
    message(STATUS "protobuf library found")
else()
    message(FATAL_ERROR "protobuf library is needed but cant be found")
endif()

#set(PROTO_SRCS ${PROJECT_SOURCE_DIR}/proto/srcs)
#set(PROTO_HDRS ${PROJECT_SOURCE_DIR}/proto/hdrs)
include_directories(${PROTOBUF_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${proto_files})

add_executable(cppTest main.cc ${PROTO_SRCS} ${PROTO_HDRS})

target_link_libraries(cppTest ${PROTOBUF_LIBRARIES})
AddressBook.proto
syntax = "proto2";
package tutorial;

message Person {
   required string name=1;
   required int32 id=2;
   optional string email=3;
   
   enum PhoneType {
       MOBILE=0;
       HOME=1;
       WORK=2;
   }
   
   message PhoneNumber {
       required string number=1;
       optional PhoneType type=2 [default=HOME];
   }
   
   repeated PhoneNumber phone=4;
}

message AddressBook {
   repeated Person person=1;
}
main.cc

这样添加即可

#include "AddressBook.pb.h"
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值