» gRPC快速入门:C++ » 3. 创建 proto 文件 » 3.2 生成客户端和服务端代码

生成客户端和服务端代码

接下来,我们需要从 .proto 服务定义文件中生成 gRPC 客户端和服务端接口。我们使用 protocol buffer 编译器 protoc 以及一个 gRPC C++ 插件来生成文件。

examples/cpp/route_guide/cmake/build 目录中,运行以下命令:

make route_guide.grpc.pb.o

该命令其中包含了如下操作:

protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/route_guide.proto
protoc -I ../../protos --cpp_out=. ../../protos/route_guide.proto

运行此命令将在当前目录中生成以下文件:

  • route_guide.pb.h,声明所有生成的 message 类的头文件。
  • route_guide.pb.cc,包含所有 message 类的实现。
  • route_guide_grpc.pb.h,声明生成的服务类的头文件。
  • route_guide_grpc.pb.cc,包含服务类的实现。

这些包含:

  • 所有 protocol buffer 代码,用于填充、序列化、获取请求和响应类型数据。
  • 一个叫做 RouteGuide 的类,其中包含以下内容:
    1. 一个用于客户端调用 RouteGuide 服务中定义方法的接口类型(或存根)。
    2. 两个用于服务端实现 RouteGuide 服务中定义的方法的抽象接口。