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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions