protobuf源码编译

由于在网上只能找到 可执行文件和源码,而没有相应的.lib或.a 于是我这里就自己搞一下了。

下载源码:点击打开链接

我是用的是cpp 即c++源码版本编译

首先我们先进入protobuf-3.1.0\cmake目录,查看README说明就知道如何编译windows版本了。

准备:

确保你的系统有CMake 点击官网下载   ,Visual Studio ,(Git是非必须的)。

开始:

通过开始菜单,打开“VS2015 x64 Native Tools Command Prompt” 我当前使用的是2015版本。

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC>  切换到你的工作目录我是用命令:

E:

E:\> cd  study\protobuf\protobuf-cpp-3.1.0

E:\study\protobuf\protobuf-cpp-3.1.0> mkdir install   创建一个存放build出来结果的目录

进入protobuf目录 进入cmake目录

E:\study\protobuf\protobuf-cpp-3.1.0\protobuf-3.1.0\cmake>mkdir build & cd build

E:\study\protobuf\protobuf-cpp-3.1.0\protobuf-3.1.0\cmake\build>mkdir release & cd release

接着使用命令:

cmake -G "NMake Makefiles" ^
     -DCMAKE_BUILD_TYPE=Release ^
     -DCMAKE_INSTALL_PREFIX=../../../../install ^
     ../..

这是创建release版本同样返回 上一层目录 build

E:\study\protobuf\protobuf-cpp-3.1.0\protobuf-3.1.0\cmake\build>mkdir debug & cd debug

创建debug版本

cmake -G "NMake Makefiles" ^
     -DCMAKE_BUILD_TYPE=Debug ^
     -DCMAKE_INSTALL_PREFIX=../../../../install ^
     ../..

接着在返回上一层目录 建立解决方案

E:\study\protobuf\protobuf-cpp-3.1.0\protobuf-3.1.0\cmake\build>mkdir solution & cd solution

cmake -G "Visual Studio 14 2015 Win64" ^
     -DCMAKE_INSTALL_PREFIX=../../../../install ^
     ../..

我是用的是 vs2015 这个根据你自己的版本修改就行了。

进入到solution目录你就会发现已经产生了一个 protobuf.sln 的工程文件,没错这个就是我们需要的工程

编译方式有两种:

1、 就是直接进入build\release目录使用命令 nmake 就开始编译了(debug版本同理)。

2、通过vs IDE打开刚才的工程文件,选择release或debug版本 开始编译就可以了。

编译完成后(其实这时候你进入release目录就可以看到已经编译出来了,)

就需要进行test测试了

看到pass 测试通过后

执行 nmake install安装(其实我的测试没有通过,错误是因为64编译出现问题,于是我是用sln工程文件在ide中编译)


完后可以看到 release版本有 libprotobuf.lib  libprotoc.lib protoc.exe 文件

那么我们就可以写proto文件 通过 cmd终端执行

>protoc.exe --proto_path=./ --cpp_out=./output myMessage.proto

--proto_path= 指定proto文件目录

--cpp_out=指定输出cpp文件目录

myMessage.proto 为proto源文件名

注意我是用的3版本proto文件的书写需要加上 syntax="proto2"; 指定使用哪个版本

我的myMessage.proto 文件内容如下

syntax="proto2";
message LogonReqMessage {
  required int64 acctID = 1;
  required string passwd = 2;
}

加入使用proto3 required字段不再允许了

加入使用3可以按照以下写法

syntax="proto3";
message LogonReqMessage {
  int64 acctID = 1;
  string passwd = 2;
}

是不是简单多了,这个就是3的功能,至于3的变化有哪些请查看官方说明 https://github.com/google/protobuf/releases


还有为了方便我们最后自己写一个bat脚本, 当修改了proto后 直接点击执行bat文件就可以完事,不需要每次进入相应目录执行 proto.exe 命令那么麻烦。


贴出我编译的结果链接,大家可以前往下载:点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值