如何用proto生成文件
来源:互联网 发布:通过 相信 马克思 知乎 编辑:程序博客网 时间:2024/05/04 15:40
一:编译源码
下载地址:http://code.google.com/p/protobuf/downloads/list
下载后,根据编译说明进行编译。
windows 平台,直接打开msvc中的工程文件,直接编译。
unix/Linux平台,先进行configure,在make。
[下载和编译过程不详述,请看这里]
生成的结果中有库文件有:
libprotobuf.lib
libprotobuf-lite.lib
libprotoc.lib
可执行文件有:
protoc.exe
头文件:
根据提供的extract_includes.bat文件,提取公共头文件。
二:编写proto文件
根据需要,编写proto文件。
补充一条:如果想使用libprotobuf-lite.lib(会使二进制体积小一些),则在.proto文件的头部声明:
option optimize_for = LITE_RUNTIME;
三:生成头文件
编写完proto文件后,接下来,用protoc.exe生成.h和.cc文件。
命令如下:
protoc.exe -proto_path=SRC --cpp_out=DST SRC/checklist.proto
其中--proto_path指出proto文件所在的目录,--cpp_out则是生成的代码文件要放的目录,最后的一个参数指出proto文件的路径。如上述命令中可以看出,将SRC目录下的addressbook.proto编译后放在DST目录下,应该会生成checklist.pb.h和checklist.pb.cc文件
四:Notepad++挂接ProtoBuffer代码生成器protoc
手动用proto文件生成.h/.cc文件比较麻烦,可以借用notepad++的插件一劳永逸
在插件菜单NppExec(如果没有就先装这个插件)->Execute弹出的对话框中输入以下信息
编译出的文件将自动放置到proto文件所在目录
D:\Dropbox2\Dropbox\caffe-windows-ms\windows\thirdparty\bins\protoc.exe --proto_path=D:\Dropbox\deeplab_v2-master --cpp_out=D:\Dropbox\deeplab_v2-master D:\Dropbox\deeplab_v2-master\caffe.proto
五:与工程进行集成
需要把生成的.h和.cc导入到工程中去,在需要用到数据解析的文件中,引用该.h文件。
需要把libprotobuf.lib(或libprotobuf-lite.lib)添加到项目的依赖库中。
补充一条:一般用vs编的时候,默认需要在.cpp/.cc文件头部加预编译头文件#include "stdafx.h",但这又会修改.cc文件(原则上生成的.h/.cc文件不要修改),所以解决的方法就是:在VS的solution explorer中右键checklist.pb.cc-->属性-->预编译头(precompiled header)->预编译头(precompiled header)-->选择“不使用预编译头”("not using precompiled headers")
六:推荐做法:
建立文件夹pbbuff,在其中创建3个子文件夹:bin,lib,include,其中:
bin 存放proto.exe文件
lib 存放libprotobuf.lib 文件
include 存放公共头文件
创建环境变量PBROOT,指向pbbuff文件。把%PBROOT%/bin添加到系统的环境变量PATH中,以便能识别protoc命令。
- 如何用proto生成文件
- protobuf如何用proto文件导出C++代码文件及链接protobuf静态库问题
- protobuf如何用proto文件导出C++代码文件及链接protobuf静态库问题
- 如何用jsp生成excel文件
- 如何用jsp生成excel文件
- 如何用Asp动态生成xml文件
- 如何用XDoclet生成hbm.xml文件
- 如何用jsp生成excel文件
- 如何用ASP生成静态Html文件
- 如何用power designer生成.sql 文件
- 如何用jsp生成excel文件
- 如何用Visual C#生成DLL文件
- 如何用Visual C#生成DLL文件
- 如何用java生成html文件
- 如何用Visual C#生成DLL文件
- 如何用MDK(keil)生成.bin文件
- 详解如何用AD 生成Gerber文件
- 如何用MyEclipse生成jar文件和exe4j生成.exe
- spring定时任务 (二) 多个任务和执行时间间隔配置
- R语言入门学习--数据类型
- timer的缺陷及使用禁区
- JS方式检验输入的IP
- require.js用法详解
- 如何用proto生成文件
- DirectX11 使用Instancing技术提高重复模型的绘制效率
- Kotlin使用小结
- 我的英语之旅(开始)
- iOS表视图分割线的总结
- 底部导航栏
- 将所有异常打印到日志
- DateTimeField *** received a naive datetime (***) while time zone support is active
- java ssm框架学习——三大框架整合