java/golang/csharp/c++/python生成pb文件的方法

 首先编译生成protoc主程序

git clone --recursive git@github.com:grpc/grpc

cd grpc

mkdir build_ninja & cd build_ninja

cmake -GNinja ..

cp third_party/protobuf/protoc .

1. 生成C++版本的pb文件

protoc --grpc_out cpp --cpp_out cpp -I ./ --plugin=protoc-gen-grpc=grpc_cpp_plugin.exe  helloworld.proto

2. 生成python版本pb文件

protoc --grpc_out python --python_out python -I ./ --plugin=protoc-gen-grpc=grpc_python_plugin.exe helloworld.proto

3. 生成csharp版本

protoc --grpc_out csharp --csharp_out csharp -I ./ --plugin=protoc-gen-grpc=grpc_csharp_plugin.exe helloworld.proto

4. 生成java版本

首先生成java版本plugin

git clone --recursive git@github.com:grpc/grpc-java
创建grpc-java-plugin文件夹

拷贝grpc-java/compiler/src/java_plugin/cpp/内的文件到grpc-java-plugin中

创建一个CMakeLists.txt文件将一下内容拷贝其中

cmake_minimum_required(VERSION 3.11)

project(grpc-java-plugin)

file(GLOB JAVA_PLUGIN_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/java_plugin.cpp
                           ${CMAKE_CURRENT_SOURCE_DIR}/java_generator.cpp
                           ${CMAKE_CURRENT_SOURCE_DIR}/java_generator.h)

add_executable(${PROJECT_NAME} ${JAVA_PLUGIN_SRCS})

target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/grpc/include)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/grpc/third_party/protobuf/src/)
add_subdirectory(grpc)

target_link_libraries(${PROJECT_NAME} PRIVATE libprotobuf-lite grpc libprotoc)

将第一步的grpc源码整个拷贝到grpc-java-plugin中

编译生成grpc-java-plugin

mkdir build_ninja & cd build_ninja

cmake -GNinja ..

cmake --build . -j 10

拷贝插件到protoc程序目录下

生成命令

protoc --grpc_out java --java_out java -I ./ --plugin=protoc-gen-grpc=grpc_java_plugin.exe helloworld.proto

5.生成golang版本

git clone --recursive git@github.com:golang/protobuf

用于编译protoc-gen-go插件进而升成 helloworld.pb.go

编译插件cd protobuf/protoc-gen-go/

go build

gitt clone --recursive git@github.com:grpc/grpc-go

用于编译protoc-gen-go-grpc插件进而生成helloworld_grpc.pb.go

编译插件cd grpc-go/cmd/protoc-gen-go-grpc/

go build

插件拷贝到protoc目录下,执行生成命令

protoc --go-grpc_out=golang --go_out=golang helloworld.proto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值