protobuf的编译方法如下
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto
这里有三个需要关注的参数
1.引用文件夹(使用--proto_path 或者 -I),如果proto文件中需要引用其他文件,在这指定(需要绝对路径,也就是需要完整的路径)
2.文件输出文件夹 (--cpp_out 或者 --java_out 或者 --python_out) 根据需要选择需要生成的格式,并且指定文件夹
3.需要编译的pb文件
IMPORT_PATH 引用的路径:当pb文件里面有import关键字时,会在引用路径里面寻找依赖的文件。如果没有给出,会再当前路径下进行寻找。也可以缩写成 -I
--cpp_out=DST_DIR 在 DST_DIR文件夹下生成c++文件
--java_out=DST_DIR 在 DST_DIR文件夹下生成java文件
--python_out
=DST_DIR 在 DST_DIR文件夹下生成python文件
path/to/file.proto 需要编译的pb文件
例如:我在/User/hello/Document/pb下有个a.proto 文件,并且a.proto没有引用其他的文件,我想编译c++文件到/User/hello/Document/c++
protoc --proto_path=/User/hello/Document/pb --cpp_out=/User/hello/Document/c++ /User/hello/Document/pb/a.proto
这里是 google官方的文档