protobuf源码编译

    xiaoxiao2023-03-25  4

    由于在网上只能找到 可执行文件和源码,而没有相应的.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 命令那么麻烦。

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

    转载请注明原文地址: https://ju.6miu.com/read-1203637.html
    最新回复(0)