在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. 使用 eclipse+egit 将项目提交至 github ,本地的git仓库:eclipse工作项目目录

      新建github仓库   写一个github上仓库的名字,系统会自动检测重复性,无重复则可以提交                           大于号代表有需要提交的东西           ...

  2. URL最大长度限制

    在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符.赶紧搜索查证了一番,理解如下: URL不能大于255bytes的说法确实存在,在RFC2616中提到: T ...

  3. JavaScript Patterns 4.3 Returning Functions

    Use closure to store some private data, which is accessible by the returned function but not to the ...

  4. PHP读写XML文件的四种方法

    PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介 ...

  5. WebApi 使用PUT和DELETE时报405的问题

    最近两天写了个项目,里面有一个接口是用谓词delete接收请求. 本地完全没问题,但是当发布到服务器上之后(IIS7.5),就报出 405.0 - Method Not Allowed 很明显是配置问 ...

  6. 深度学习笔记------linux下配置安装caffe-cpu only模式

    本文适合初学者学习配置caffe的最简单方法.这是我在看了网上各种大神的方法后总结的最傻瓜式的配置方法了. 本人也是在不断地配置caffe过程中受打击与成长@.@ 第一步.配置caffe所需的依赖环境 ...

  7. windows server 2003下安装.net framework 3.5 一直安装不成功

    安装包是在微软下载中心下的197m的文件 重启了也是不行,最后 找到.net framework 3.5 sp1 一个237m的安装包 安装成功了! Congratulations ! ​

  8. xamarin.android 图片高斯模糊效果

    代码如下: private static float BITMAP_SCALE = 0.1f; private static float BLUR_RADIUS = 12.0f; public sta ...

  9. Linux ethtool命令

    一.简介 ethtool 是用于查询及设置网卡参数的命令. 二.常用选项 ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0.eth1等等 ethtool ...

  10. Js脚本选取iframe中的元素

    遇到个小问题,需要用到原生Js处理页面中的元素,以往一个document.getElementById就完活的选取元素,这次却不好使了.. 仔细看代码发现要选取元素外面多了一个iframe标签 < ...