美文网首页
protobuf 命令

protobuf 命令

作者: bo_song | 来源:发表于2016-09-02 13:56 被阅读0次

    protoc 命令的获得

    源码在 https://github.com/google/protobuf , 如果不想自己编译获得最新版本,则可以下载官方编译好的各个平台的,下载地址:https://github.com/google/protobuf/releases ,注意不是带语言后缀的文件,那是源码,如下图:

    image
    下载后的解压缩包含的内容如下(以mac下为例)
    image
    我们通过 which 命令可以查到 protoc 的安装目录, 覆盖它即可。
    $ which protoc
    /usr/local/bin/protoc

    例子

    Java 文件生成

    $ protoc --java_out=./java/ ./proto/helloworld.proto
    protoc 的命令格式为 protoc [OPTION] PROTO_FILES (最后是待编译的 proto文件)
    --java_out 为输出java代码的目录,这里指定的是 ./java/ 目录。
    随后我们指定了proto文件的位置 ./proto/helloworld.proto 。
    执行上述命令,我们就 ./java/ 目录下就产生了对应的 java文件。

    go 文件生成

    下面这几种方式生成都可以:

    $ protoc --go_out=./go/ ./proto/helloworld.proto
    

    跟上面Java的生成完全一样,只不过这次是让生成 go 的代码。

    $ protoc --go_out=./go/ -I proto ./proto/helloworld.proto
    

    简单来说,就是如果多个proto文件之间有互相依赖,生成某个proto文件时,需要import其他几个proto文件,这时候就要用-I来指定搜索目录。
    如果没有指定 –I 参数,则在当前目录进行搜索。
    上面两种方法产生的目录如下图, –I 参数起作用了后,生成目录少了一级:

    image

    javanano 文件生成

    $ protoc --javanano_out=ignore_services=true:./javanano/ -I proto ./proto/garlic.proto
    由于 javanano 是给 android 用的,没有服务器端代码,所以多了--javanano_out=ignore_services=true:DST_DIR 这个设置,其他完全一样。
    参考: https://github.com/grpc/grpc-common/issues/156

    Language
    Platform
    Command

    Node.js
    Linux, Mac, Windows

    npm install grpc
    

    Python
    Linux, Mac, Windows

    pip install grpcio
    

    Ruby
    Linux, Mac, Windows

    gem install grpc
    

    PHP
    Linux, Mac, Windows

    pecl install grpc-beta
    

    Go
    Linux, Mac, Windows

    go get google.golang.org/grpc
    

    Objective-C
    Mac
    Runtime source fetched automatically from Github by Cocoapods

    C#
    Windows
    Install gRPC NuGet package from your IDE (Visual Studio, Monodevelop, Xamarin Studio)

    Java
    Linux, Mac, Windows
    Use our Maven and Gradle plugins that provide gRPC with statically linked boringssl

    C++
    Linux, Mac, Windows
    Currently requires manual build and install

    参考资料:
    https://github.com/google/protobuf/tree/master/javanano
    https://github.com/google/protobuf

    相关文章

      网友评论

          本文标题:protobuf 命令

          本文链接:https://www.haomeiwen.com/subject/sqohettx.html