Skip to content

protoc各种参数生成的命名规则为什么那么奇怪? #56

@coreyzzp

Description

@coreyzzp

下面尝试三种生成方式(全部都在 WORKDIR=~/dev-workspace/wx/phxrpc 下执行):

  1. third_party/protobuf/bin/protoc -Ithird_party/protobuf/include -I./phxrpc/rpc --cpp_out=. ./phxrpc/rpc/phxrpc.proto

最后生成的结果在 $WORKDIR 里面,与cpp_out参数指定的目标一致,然后phxrpc.pb.h的namespace为protobuf_phxrpc_2eproto

  1. third_party/protobuf/bin/protoc -Ithird_party/protobuf/include -I./phxrpc/rpc --cpp_out=./phxrpc/rpc ./phxrpc/rpc/phxrpc.proto

最后生成的结果在 $WORKDIR/phxrpc/rpc 里面,与cpp_out参数指定的目标一致,然后phxrpc.pb.h的namespace为protobuf_phxrpc_2eproto

  1. third_party/protobuf/bin/protoc -Ithird_party/protobuf/include -I. --cpp_out=. ./phxrpc/rpc/phxrpc.proto

最后生成的结果在 $WORKDIR/phxrpc/rpc 里面,与cpp_out参数指定的目标不一致 ,然后 phxrpc.pb.h的namespace为 protobuf_phxrpc_2frpc_2fphxrpc_2eproto

第三种就是官方提供的生成pb.cc的方式,这种方式生成的代码,在另外一个proto文件引用才是正常的,可视为什么呢?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions