在caffe框架中,使用的数据格式是google的 protocol buffer。对这个不了解,所以,想简单学习一下。简单来说,Protocol Buffer 是一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化和反序列化。一提到序列化就想到了JSON,不错,两者很相似。如果对JSON不熟悉,那么XML应该知道吧。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

protocol buffer 的编译需要安装cmake,可到https://cmake.org/下载并安装。

下载protocol buffer包,可直接到google官网下载,http://code.google.com/p/protobuf/,但是我上不了google,所以我在https://github.com/google/protobuf这儿下载。

下载解压后,如我的目录:D:\caffe\protoBuf下,会有一个cmake文件夹,编译的文件都放在这儿了。打开VS的命令提示行,如

C:\Program Files (x86)\Microsoft Visual Studio 11.0>

进入编译目录

C:\Program Files (x86)\Microsoft Visual Studio 11.0>cd d:\caffe\protoBuf\cmake

新建目录build,用于存放makefile文件。注意,可编译为DEBUG版本和release版本,但是分别编译。

d:\caffe\protobuf\cmake>mkdir build & cd build

如果编译debug版本

d:\caffe\protobuf\cmake\build>mkdir debug & cd debug

d:\caffe\protobuf\cmake\build\debug>cmake -G "NMake Makefiles"  -DCMAKE_BUILD_TYPE=Debug  -Dprotobuf_BUILD_TESTS=OFF

 -DCMAKE_INSTALL_PREFIX=../../../install ../..

如果编译release版本

d:\caffe\protobuf\cmake\build>mkdir release & cd release

d:\caffe\protobuf\cmake\build\release>cmake -G "NMake Makefiles"  -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF

 -DCMAKE_INSTALL_PREFIX=../../../install ../..

仔细一比较两种模式,就能看出区别在哪了。后面我就只以debug为例了,基本上是一样的操作

接下来最重要的一步,编译

d:\caffe\protobuf\cmake\build\debug>nmake

很简单,直接输入nmake回车就可以了,然后慢慢等待。

编译完成后,进行安装

d:\caffe\protobuf\cmake\build\debug>nmake install

会在最上层根目录(d:\caffe\protobuf)下生成一个install的文件夹,里面有三个文件夹,bin,include和lib。如果对vs比较熟悉的话,就知道这三个文件夹代表着什么了。bin文件里面protoc.exe, include里面是包含头文件,lib里面是三个静态链接库文件。至此,编译就结束了。在你的项目里面设置好包含目录和库目录就可以使用了。

Google protocol buffer在windows下的编译的更多相关文章

  1. Google Protocol Buffer在vs2010下配置

    1.从这里下载protobuf-2.6.1.tar.gz到桌面,并解压,解压后的文件夹为protobuf-2.6.1.(我的桌面为C:\Users\mcl\Desktop) 2 .进入文件夹proto ...

  2. Google protocol buffer的配置和使用(Linux&&Windows)

    最近自己的服务器做到序列化这一步了,在网上看了下,序列化的工具有boost 和google的protocol buffer, protocol buffer的效率和使用程度更高效一些,就自己琢磨下把他 ...

  3. Google Protocol Buffer安装编译及使用

    近期玩了玩谷歌的Protocol Buffer.以下就简介下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准.眼下已经正在使用的 ...

  4. Google Protocol Buffer 简单介绍

    以下内容主要整理自官方文档. 为什么使用 Protocol Buffers .proto文件 Protocol Buffers 语法 编译.proto文件 Protocol Buffers API 枚 ...

  5. Google Protocol Buffer

    Google Protocol Buffer(protobuf)是一种高效且格式可扩展的编码结构化数据的方法.和JSON不同,protobuf支持混合二进制数据,它还有先进的和可扩展的模式支持.pro ...

  6. Google Protocol Buffer入门

    简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...

  7. Google Protocol Buffer 的使用和原理[转]

    本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...

  8. Google Protocol Buffer 的使用和原理

    Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...

  9. 【Google Protocol Buffer】Google Protocol Buffer

    http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers ...

随机推荐

  1. IOS开发之实现App消息推送(最新)

    好久没有写过博客啦,今天就由本菜鸟给大家做一个简单的IOSApp消息推送教程吧!一切从0开始,包括XCode6, IOS8, 以及苹果开发者中心最新如何注册应用,申请证书以及下载配置概要文件,相信很多 ...

  2. JavaScript Patterns 3.8 Error Objects

    The error objects created by constructors(Error(),  SyntaxError(), TypeError(), and others) have the ...

  3. Java异常信息处理

    import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.jun ...

  4. cocos2d-x之计时器初试

    bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...

  5. 设计模式C#实现(六)——单例模式

    单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 构成: 1.私有的构造函数 2.私有静态的实例 3.返回实例的静态方法 public class Singleton { privat ...

  6. linux 程序管理

    在linux下做开发,经常要用到一些管理程序的命令,如查看进程,查看内存等情况.看网络情况.如下的笔记是看书时记下一些简单常用的命令. 1)top [root@005 fsh]#top[-d数字]|t ...

  7. Android ImageButton图像灰色边框

    灰色边框,是imageButton空间自带的. 第一种解决方案: android:scaleType="fitXY"//这个代码是:拉伸图片(不按比例)以填充的长宽.所以图像最后最 ...

  8. linux timezone

    首先需要了解下“UTC时间”与“本地时间”UTC时间:世界协调时间(又称世界标准时间.世界统一时间),在一般精度要求下,它与GMT(Greenwich Mean Time,格林威治标准时间)是一样的, ...

  9. 迭代加深搜索 codevs 2541 幂运算

    codevs 2541 幂运算  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 从m开始,我们只需要6次运算就可以计算出 ...

  10. 矩阵乘法快速幂 codevs 1732 Fibonacci数列 2

    1732 Fibonacci数列 2  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 在“ ...