这篇文章作为去年写的在电脑上配置 protobuf + VS Code 开发环境的补充。
插件
感谢 无别052 的补充,现在可以去 VS Code 安装这个插件:
添加链接描述
回看之前的文章,一年多的开发以来,我意识到并非一定要靠某些可视化的行为来完成编译工作。其实proto文件的编译完全可以在命令行完成。因此这个插件更多是进行语法的检查,很遗憾,它做不到。
syntax = "proto3";
message Person {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
aaa bbb = 4;
}
这部分代码在安装插件以后,也不会报错。然而 CLion 下由 Jetbrains 官方开发的 proto 插件却能报出这一错误。
不过考虑到我所在的公司也没有像样的工具编写 proto 文件,都是记事本一开了事。其实我也觉得这玩意的语法检查真的无关紧要,VS Code的插件能对关键词着色就已经胜过记事本了。文章的剩余部分继续在 VS Code 操作。
使用命令行编译proto文件
首先,老生常谈,Windows的同学需要将protoc
的路径录入环境变量,Linux需要建立软连接(要是直接安装在 /usr/bin 就不用)
使用--cpp_out=
命令行参数,Protocol Buffer编译器会生成C++输出。--cpp_out=
选项的参数是你要存放C++输出的目录。编译器会为每个.proto
文件生成一个头文件和实现文件。输出文件的名称与给定的.proto文件名称有关:
- 后缀(.proto)被替换成
.pb.h
(头文件)或pb.cc
(实现文件)。 - proto路径(通过
--proto_path
或-I
指定)被输出路径(通过--cpp_out
指定)替换。
我的person.proto如下:
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
int32 sex = 3;
}
比如我就想在这里生成我的.pb.h(头文件)和pb.cc(实现文件)(一般没有这么做的,因为缺很多文件),我可以使用如下命令:
protoc -I . --cpp_out . person.proto
这样就生成了两个文件:
生成的文件缺少很多头文件?这是正常的。我们需要编译protobuf的源代码才能生成这些头文件。下一篇文章我会讲下这个。