protobuf 系列 ---------下载、编译与使用
protobuf是谷歌开发并开源的二进制序列化工具,比常用的xml,json体积更小,解析速度更快。
目前,手头上的项目有涉及到这个工具,打算仔细研究一番,顺带记录遇到的问题,解决方法,时间足够的话,深入探究下源码。
今天主要记录下怎么下载源码,怎么成功编译。本人的平台是windows,编译器用的是vs2010。
源码下载:https://github.com/google/protobuf.git
本人下载到本地目录为:E:\code\protobufstudy\github

下载完成后的目录结构如上。
怎么编译的话里面有份文档解释的非常清楚

考虑到有些人不喜欢看英文,我再把我的编译过程展示下。
一:前期准备:CMake工具,可以去官网下载二进制版本的。https://cmake.org/download/

安装到本地后,如 C:\Program Files\CMake\bin ,然后打开命令行设置下环境变量E:\code\protobufstudy\github>set PATH=%PATH%;C:\Program Files (x86)\CMake\bin
(ps:命令行最好切换到下载的源码目录下,这样与本人讲述的一致)
这时就能使用cmake命令了,否则会说cmake不是内部命令什么的。
然后进入源码目录,E:\code\protobufstudy\github>cd trunk
E:\code\protobufstudy\github\trunk>
进入源码下面的cmake目录,E:\code\protobufstudy\github\trunk>cd cmake
E:\code\protobufstudy\github\trunk\cmake>
创建build目录,E:\code\protobufstudy\github\trunk\cmake>mkdir build & cd build
E:\code\protobufstudy\github\trunk\cmake\build>
创建solution目录, E:\code\protobufstudy\github\trunk\cmake\build>mkdir solution & cd solution
E:\code\protobufstudy\github\trunk\cmake\build\solution>
执行cmake指令,cmake -G "Visual Studio 10 2010 Win64" ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../.. (暂且叫cmake指令1)
如果会报错误,找不到cl.exe,请设置下cl.exe的环境变量
E:\code\protobufstudy\github\trunk\cmake\build\solution>set PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin (这个是你本地的cl.exe所在目录)
再次执行cmake指令1,如果还报错误,找不到mspdb100.dll,请设置下mspdb100.dll的环境变量
E:\code\protobufstudy\github\trunk\cmake\build\solution>set PATH=%PATH%;D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE (这个是你本地的mspdb100.dll所在目录)
再次执行cmake指令1,如果还报错误,没有找到gmock目录,要么下载下gmock,https://github.com/google/googlemock.git 目录为E:\code\protobufstudy\github\trunk\gmock,
本人懒,没有下载,那么久更改下cmake执行。
执行cmake指令,cmake -G "Visual Studio 10 2010 Win64" ^
-Dprotobuf_BUILD_TESTS=OFF ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../.. (暂且叫cmake指令2)
这时在solution目录下就会有相应的.sln了。

打开编译即可,本人编译的release,编译的成果

protobuf 系列 ---------下载、编译与使用的更多相关文章
- protobuf的下载、编译和使用
一 背景 工作中临时需要使用 protobuf v3.0.2 做消息格式转换,折腾了很久才搞定,这里特意做一个记录. 二 准备工作 全程使用的电脑为公司的win7 64位旗舰版,已经预先安装VS201 ...
- 系列篇|编译可在Android上运行的依赖库(一):glib库
前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- (1)redis下载编译
一.redis下载编译 这里没什么好说的 用的版本是redis-2.8.17 1)redis-server是可执行程序 2)mian函数在redis.c里面 3)如果要修改调试 这届在src目录下 ...
- 下载编译Chrome详细步骤
文章来源:http://blog.csdn.net/allendale/article/details/9262833 参考:http://dev.chromium.org/developers/ho ...
- Vxworks 6.6系列下载地址
Vxworks 6.6系列下载地址: ---------------------------------- ftp://ftp.windriver.speedera.net/ftp.windriver ...
- IBM ServerGuide引导盘全系列下载网址
IBM ServerGuide引导盘全系列下载网址 官网链接 https://www.ibm.com/support/home/docdisplay?lndocid=SERV-GUIDE v9.30 ...
- 更新vs2017 15.9.2后,在指定-T v141_xp情况下载编译会报下面warning MSB8051
更新vs2017 15.9.2后,在指定-T v141_xp情况下载编译会报下面warning: C:\Program Files (x86)\Microsoft Visual Studio\2017 ...
- Spring源码研究--下载-编译-导入eclipse-验证
一,环境配置 操作系统:Unbutu14.04LTS JDK: 1.8.0_40 git: 1.9.1 gradle: 2.2.1 二,源码下载-编译-导入eclipse-验证 1,下载 使用git直 ...
随机推荐
- 【转】air调用windows自带的虚拟键盘
原文:http://bbs.9ria.com/blog-73243-19560.html 最近在做一个东西,需要用到虚拟键盘.刚开始准备用as3开发一套,结果突然想起来windows有个自带的虚拟键盘 ...
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结 本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...
- C++中的继承详解(3)作用域与重定义,赋值兼容规则
作用域与同名隐藏 一样的,先上代码 1 class A 2 { 3 public: 4 int a_data; 5 void a() 6 { 7 cout << "A" ...
- JavaScript 函数的定义-调用、注意事项
函数定义 函数语句定义 function(a,b){ return a+b; } 表达式定义 var add = function(a,b){return a+b}; //函数表达式可以包含名称,这在 ...
- Java多线程学习笔记(二)——Executor,Executors,ExecutorService比较
Executor:是Java线程池的超级接口:提供一个execute(Runnable command)方法;我们一般用它的继承接口ExecutorService. Executors:是java.u ...
- Python -堆的实现
最小(大)堆是按完全二叉树的排序顺序的方式排布堆中元素的,并且满足:ai >a(2i+1) and ai>a(2i+2)( ai <a(2i+1) and ai<a(2 ...
- YARN资源调度策略之Capacity Scheduler
背景 yarn默认使用的是最简单的FIFO调度器,即一个default队列,所有用户共享,分配资源也是先到先得,没有优先级之分.有时一两个任务就把资源全占了,其他任务吃不到资源造成饥饿,显然这样的资源 ...
- angularjs中常用的ng指令介绍【转载】
原文:http://www.cnblogs.com/lvdabao/p/3379659.html 一.模板中可使用的东西及表达式 模板中可以使用的东西包括以下四种: 指令(directive).ng提 ...
- apache配置多个站点
序:这次项目主要是为了给微信客户端添加一个地址,在微信公众号里面添加一个可以访问的app下载页面,说起来很简单,但总不能为了这么小的一个网站新建一个web服务器吧! 现在开始配置,首先必须确认已经在L ...
- 用Redis存储Tomcat集群的Session
作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 前段时间,我花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用 ...