一:概述

关于 protobuf 在此不再多说,此处记录下成功编译步骤以备日后查阅。
注意:本文并不是使用cmake gui进行编译的,如果熟悉cmake gui的话,也可以使用gui进行生成编译。

二:准备资源及工具

  1. VS2013或以上版本,安装好
  2. protobuf 源码,下载地址:
    官网:http://code.google.com/p/protobuf/
    git网:https://github.com/google/protobuf或git:https://github.com/google/protobuf/releases
    个人是最后一个地址下载的,下载包为末尾的:Source code (zip) 完整包
  3. cmake,下载并安装好
  4. 注意:如果有需要编译gtest的,还需要上官网或git下载gmock与gtest相关资源包。(早上这两个包好像是分开的,现在新版本,看readme中描述,gmock像是已被整合到gtest中了)。本人不需要gtest,故不下载。

三:环境配置

  1. 安装好cmake后,打开cmd窗口输入 cmake --version 检查cmake是否安装正确。如果提示错误,则需要手动配置cmake到系统环境变量中
  2. 解压下载好的 protobuf 源码完整包。(如解压到此处:I:\Dev\C++\ ,因此,本人的 protobf 资源所在位置为:I:\Dev\C++\protobuf-3.3.0)

四:编译 protobuf

  1. 打开VS2013 x86 本地工具命令提示(因为个人编译的是x32版本)
  2. cd I:\Dev\C++\protobuf-3.3.0\cmake
  3. mkdir build & cd build
  4. mkdir x86 & cd x86
  5. mkdir debug & cd debug
    提示:要编译release版本时,就 mkdir release & cd release 即可。此步骤只是创建一个debug(或release)目录,用于存放生成debug(或release)相关的cmake file配置信息。执行完步骤3、4后,当前所在路径为:I:\Dev\C++\protobuf-3.3.0\cmake\build\x86\debug
  6. cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=../../../../install/x86/debug ../../..
    此时稍等片刻等待makefile相关的配置文本生成完成。如果没有提示错误,则继续后续步骤
  7. nmake
    此时再次稍等片刻等待protobuf(相应的debug或release版本)编译完成。如果没有提示错误,则继续后续步骤
  8. nmake install
    此时再次稍等片刻等待安装完成。如果没有提示错误,则会在I:\Dev\C++\protobuf-3.3.0目录下生成一个 install目录,里面会有 bin 目录、lib 目录、include 目录 以及一个 cmake 目录。对于开发有用的主要是前三个目录。

Windows下编译protobuf v3.3.0的更多相关文章

  1. 继《在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib》修订

    在之前的<在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib>中有些问题,后来由于时间不是很充足,故现在对其中的问题进行完善,如下所示对红色框框中的相应的 ...

  2. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  3. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  4. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  5. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  6. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

  7. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

  8. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  9. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

随机推荐

  1. 安装openssl-0.9.8报错out range of signed 32bit displacement .

    安装openssl-0.9.8报错out range of signed 32bit displacement http://blog.csdn.net/wangtingyao1990/article ...

  2. [转载]Python: 你不知道的 super

    原文出处: geekvi super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用  ...

  3. 【COGS2622】后缀平衡树

    这是个后缀平衡树的裸题.... 然后傻逼的我调了一下午. #include<bits/stdc++.h> typedef long long ll; using namespace std ...

  4. python 使用国内源安装软件

    python linux 等 使用国内源安装软件 速度更快 你值得拥有 ! 豆瓣源:pip install -i https://pypi.douban.com/simple/ 阿里源:pip ins ...

  5. 虚拟机 VMware Workstation12 安装OS X 系统

      Windows下虚拟机安装Mac OS X —– VMware Workstation12安装Mac OS X 10.11 本文即将介绍WIN虚拟MAC的教程.完整详细教程(包含安装中的一些问题) ...

  6. centos 磁盘分区格式化与挂载

    1 查看系统里硬盘信息fdisk -l 2 磁盘分区fdisk /dev/sdc输入m显示帮助a:命令指定启动分区:d:命令删除一个存在的分区:l:命令显示分区ID号的列表:m:查看fdisk命令帮助 ...

  7. ZOJ 3206 Disaster Area Reconstruction

    已经确定本题是错题了! ---------------------------------------------------------------- 这题有问题,不是后台数据水了就是出题人的做法是 ...

  8. Python开发基础-Day18继承派生、组合、接口和抽象类

    类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承obj ...

  9. Python中sorted函数的用法(转)

    [Python] sorted函数 我们需要对List.Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序,在本地进行排序,不返 ...

  10. nyoj(表达式求值)

    描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧. 比如输入:"1+2 ...