目录

前言

一、protobuf是什么

二、protobuf官方路径

三、protobuf编译安装

1、安装前建议

2、cmake使用

(1) cmake介绍

(2) 命令行介绍

(3) 编译选项介绍

(4) cmake安装

3、windows下使用nmake编译 

(1) nmake简介

(2) nmake工具使用

(3) 编译步骤

(4) 使用nmake编译与安装

4、Windowx下使用Microsoft Visual Studio编译

(1) cmake可视化工具的使用

(2) 使用VS工程编译

5、Linux下编译

(1) 编译前注意事项

(2) 编译步骤

四、常见问题

(1) 文件缺失 无法编译成功

(2) 在liunx下编译的windows压缩包解压后的文件

五、总结

六、联系方式


前言

        现在国内,由于protobuf的各种优势,目前使用的项目团队越来越多,尤其是在游戏行业,很多的独立游戏开发在初期技术选型上都会优先选择protobuf,所以为了帮助更多小伙伴避过一些protobuf的坑,贡献个人多年的使用经验,供大家参考

一、protobuf是什么

        Protocol Buffers是Google开发的一种平台无关,语言无关,可扩展的的序列化结构数据格式,类似与XML,但是比XML更小,更快,更简单。你只需要按照规则定义你需要的数据结构,然后通过专门的源代码生成工具就可以生成各种语言所需要的数据类文件。

二、protobuf官方路径

Protocol Buffers官网 https://developers.google.cn/protocol-buffers/ 

githud httpd://github.com/protocolbuffers/protobuf/

giturl https://github.com/protocolbuffers/protobuf.git

三、protobuf编译安装

1、安装前建议

建议git代码文件 不建议使用源码压缩包  源码压缩包有可能会出现文件丢失

2、cmake使用

(1) cmake介绍

        cmake是一个跨平台的自动化工具,可以用简单的语句来描述所有支持的平台的编译、安装等过程,能够生成多种makefile或者project文件。

        cmake是目前主流的自动化工具,在QT, protobuf等许多著名第三方库中都提供cmake构建文件,由于其跨平台的特性,在第三方库的构建上十分方便。

(2) 命令行介绍

cmake -G 目标平台的构建文件类型 -D宏定义 [CmakeList.txt所在路径]

(3) 编译选项介绍

CMAKE_BUILD_TYPE编译模式(Debug[调试模式 ]|Release[发布模式])
CMAKE_INSTALL_PREFIX编译后安装路径 可以使用相对路径
protobuf_BUILD_SHARED_LIBS是否编译为动态库(OFF|ON)  
protobuf_WITH_ZLIB是否使用ZLIB库((OFF|ON  建议设置为OFF)
protobuf_BUILD_TESTS是否编译测试工程(OFF|ON 建议设置为OFF)

(4) cmake安装

cmake需要本地安装,这里就不详细介绍了,后期会出一个cmake的详细专栏给大家介绍,

这里有几个地方需要注意,

windows下安装完成后需要将cmake/bin加入到环境变量中

3、windows下使用nmake编译 

(1) nmake简介

        nmake 全称 Microsoft Program Maintenance Utility,程序管理工具,微软提供的代码解释程序,处理windows下的makefile文件,解释里面的语句并执行相应的指令。

(2) nmake工具使用

windows下的cmd工具是没有nmake命令的。如果要使用nmake需要使用Visual Studio的开发者工具命令行,如下图所示:

 

我们要根据编译后的库是在x86还是x64平台运行选择对应的工具,

x64平台建议使用

x86平台建议使用 

(3) 编译步骤

a.从githud上下载最新版protobuf源码文件到本地

git clone  httpd://github.com/protocolbuffers/protobuf/

 可以使用git命令下载也可以使用TortoiseGit可视化工具下载

b.使用vs_x64或x86命令行打开protobuf文件夹 进入cmake文件夹并创建build文件夹

这里用x64命令行示例:

c.使用cmake生成nmake文件

创建debug文件夹

进入debug文件生成nmake makefiles文件

cmake -G "NMake Makefiles" ^
     -DCMAKE_BUILD_TYPE=DEBUG ^
     -DCMAKE_INSTALL_PREFIX=../../../install/debug ^
     -Dprotobuf_BUILD_SHARED_LIBS=ON ^
     -Dprotobuf_WITH_ZLIB=OFF ^
     -Dprotobuf_BUILD_TESTS=OFF ^
     ../..

创建release 文件夹

进入release文件生成nmake makefiles文件

cmake -G "NMake Makefiles" ^
     -DCMAKE_BUILD_TYPE=Release ^
     -DCMAKE_INSTALL_PREFIX=../../../install/release ^
     -Dprotobuf_BUILD_SHARED_LIBS=ON ^
     -Dprotobuf_WITH_ZLIB=OFF ^
     -Dprotobuf_BUILD_TESTS=OFF ^
     ../..

(4) 使用nmake编译与安装

a. debug版本编译安装

在protobuf/cmake/build/debug下执行nmake & nmake install 进行编译与安装 安装位置为 prot

obuf/install/debug

b. release版本编译安装

在protobuf/cmake/build/release下执行nmake & nmake install 进行编译与安装 安装位置为 protobuf/install/release

成功安装如图所示

4、Windowx下使用Microsoft Visual Studio编译

如果nmake使用不熟练的朋友也可以选择使用Visual Studio进行编译,这里介绍一下cmake 可视化工具的使用。

(1) cmake可视化工具的使用

 这一栏选择你的protobuf文件夹下的cmake文件夹

  这一栏选择Visual Studio工程文件生成的路径

点击configure按钮在配置界面设置你的vs工程选项 VS版本 和平台版本 x64 还是 x86

 点击finish

 修改cmake参数根据上文2.(3)编译选项介绍中设置生成参数 

点击generate生成工程

(2) 使用VS工程编译

打开工程 

设置编译选项

 

生成解决方案 就可以了 

5、Linux下编译

(1) 编译前注意事项

a.使用虚拟机的朋友,linux下的文件夹尽量不要和windows下用一个,有时候会出现编译错误,如文件结束符不一致等

b.使用压缩包的朋友,请不要在linux下使用zip压缩包,也会有未编译错误,请使用正确的tar.gz的压缩包

c.为了避免操作权限问题,建议使用root账户操作

(2) 编译步骤

逐行执行以下命令

cd protobuf/cmake

#创建build文件夹
mkdir build & cd build

#创建release文件夹
mkdir release & cd release

#生成makefiles文件
cmake -G "Unix Makefiles" ^
     -DCMAKE_BUILD_TYPE=Release ^
     -DCMAKE_INSTALL_PREFIX=../../../install/release ^
     -Dprotobuf_BUILD_SHARED_LIBS=ON ^
     -Dprotobuf_WITH_ZLIB=OFF ^
     -Dprotobuf_BUILD_TESTS=OFF ^
     ../..

#编译
make -j8

#安装
make install

四、常见问题

(1) 文件缺失 无法编译成功

一般是选择的版本和你的编译工具版本不一致导致的,或者protobuf 最新版本的bug,建议使用一个稳定版本,本人遇见过压缩包文件确实,但是git下的文件正常的,所以建议使用git下的protobuf文件

(2) 在liunx下编译的windows压缩包解压后的文件

linux和windows的文件结束符会不一样,所以不要使用不同操作系统下的压缩包进行编译

五、总结

以上主要是介绍的c++版本的protobuf的编译安装方法,介绍的比较细致,后续我会持续更新protobuf的使用方法,数据结构等,我在后期也会更新一些cmake 方面的使用技巧,希望有兴趣的朋友可以关注一下,共同讨论,共同提高,希望我的作品能够朋友们带来帮助,谢谢

六、联系方式

有任何问题可以联系我, 我可以在工作之余尽可能给大家提供帮助。

QQ:1609119742 影之灵

邮箱:1609119742@qq.com

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐