在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. 网络开始---多线程---GCD-01-基本使用(掌握)(六)

    /** GCD两个核心概念:任何和队列 任务:执行什么操作 队列:用来存放任务 使用就2个步骤 1.定制任务 2.将任务添加到队列中 任务的取出队列原则:FIFO原则: 先进先出,后进后出 */ #i ...

  2. Objective-C之@类别小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  3. 获取byte数组的实际使用长度

    背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...

  4. 基于git的工作流程

    本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...

  5. 用java程序输出自己的姓名

    代码部分: public class Hello { public static void main(String[] args) { System.out.println("$$$$$$$ ...

  6. linux文件压缩与打包

    在linux中常见的压缩命令 首先,在linux中压缩文件的扩展名大多是 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar tar程序打包的数据,并没有压缩过 *.t ...

  7. 纯CSS3制作学生入学档案表单样式代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. HTML5与触摸界面

    习惯了开发典型的面向电脑端浏览器的网站在开发手机端网站或者移动App的时候面对很多新的问题,这些新的问题,在我看来或多或少会给浏览者在使用网站或App的时候带来不好的用户体验,对于一个产品级应用,用户 ...

  9. Java性能调优笔记

    Java性能调优笔记 调优步骤:衡量系统现状.设定调优目标.寻找性能瓶颈.性能调优.衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈).性能调优结束. 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多. ...

  10. [麦先生]在Laravel框架里实现邮箱验证---发送邮件

    在经过一段时间的使用后,发现在项目中很多地方需要用到用户验证,以短信验证和邮箱验证为主流趋势,小麦总结了如果在Laravel框架中实现发送邮件功能,以后会陆续更上如何实现短信验证..... 在.env ...