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


     首先编译生成protoc主程序

    1. git clone --recursive git@github.com:grpc/grpc
    2. cd grpc
    3. mkdir build_ninja & cd build_ninja
    4. cmake -GNinja ..
    5. 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文件将一下内容拷贝其中

    1. cmake_minimum_required(VERSION 3.11)
    2. project(grpc-java-plugin)
    3. file(GLOB JAVA_PLUGIN_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/java_plugin.cpp
    4. ${CMAKE_CURRENT_SOURCE_DIR}/java_generator.cpp
    5. ${CMAKE_CURRENT_SOURCE_DIR}/java_generator.h)
    6. add_executable(${PROJECT_NAME} ${JAVA_PLUGIN_SRCS})
    7. target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/grpc/include)
    8. target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/grpc/third_party/protobuf/src/)
    9. add_subdirectory(grpc)
    10. 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

  • 相关阅读:
    mysql索引失效的几个场景
    Python 教程之再见 Excel你 Python 的spreadsheets电子表格
    C++ 围炉札记
    windows redis 自启动 Redis服务无法启动报错1067问题
    Django 里如何使用 sqlite (操作步骤)
    Leetcode刷题详解——括号生成
    【nlp】2.5(cpu version) 人名分类器实战项目(对比RNN、LSTM、GRU模型)
    tiup dm deploy
    vue引入路由——帮助管理页面跳转逻辑
    Sora来袭!机器人+Sora落地性如何?
  • 原文地址:https://blog.csdn.net/CHNIM/article/details/127712412