官方文档http://doc.oschina.net/grpc?t=56831
gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。
本文用C++从编译gRPC开始,最终编译生成helloworld客户端和服务器。环境:win10 + 64位 + vs2017。将期间踩过的雷一一罗列。
准备工作:git + cmake [可选 make即MinGW,http://blog.sina.com.cn/s/blog_bc209e400102x2sm.html不推荐] 。
一、获取源码
git clone https://github.com/grpc/grpc.git
耐心等待,大约两三百M,如下,可以查看熟悉几个有用的文件夹(但不要删除或修改),examples/includes/src/third_party.
二、编译gRPC前准备工作
notepad+打开BUILDING.md文件,里边写了如何编译gRPC源码
上述VS,git,cmake,ActivePerl,Go,yasm(添加到环境变量PATH)缺一不可,(我想偷懒少下几个结果在后来cmake生成vs解决方案时一直会报错^^)我都是默认装的:
三、获取第三方库
git submodule update --init
要编译gRPC,此步必须,耐心等待,完成后grpc文件夹大约1G左右,.git里的modules
文件定义了依赖组件,完成后如下(除去bin),组件在third_party。
此时,准备工作已完成,下一节终于可以开始编译啦