我们在使用Qt开发做项目开发是时候, 经常会进行数据的跨平台传输, 就需要对数据进行序列化, 序列化的方式有很多, 现在项目开发最常用就是google公司开发的protobuf。今天传输播客老师就给大家详细讲解一下如何在Qt下编译以及使用protobuf。
1. 准备工作
![2ca221af5389347968bbf476ab8b03ae.png](https://i-blog.csdnimg.cn/blog_migrate/e69113c63371a895dce3afda272b9b0a.jpeg)
2. 生成protbuf库文件
2.1 cmake的设置与库的生成
找到编译的源为protobuf源码中的cmake文件夹,
![378433db5ade9cd1961ce19a85828dc2.png](https://i-blog.csdnimg.cn/blog_migrate/d0022a6698d79360016e18cb5cf1bb48.jpeg)
之后建立输出目录,这里在D盘下创建输出目录output-project,即:D:output-project,并将其设置为目标文件夹,在cmake中做如下设置:
![b392c19c13676b52123600362960fd99.png](https://i-blog.csdnimg.cn/blog_migrate/177198698abdcf9612c7d05308d5b0fd.jpeg)
然后点击configure按键,选择MinGW编译,默认的编译器即可,也就是QT自带的编译器,如图所示。
![7a9d38069f2920b163e69a6ae29a11f8.png](https://i-blog.csdnimg.cn/blog_migrate/a251a1b9938ad576722a8062f83f9c0e.jpeg)
点击finish按键,开始配置,配置结束后,界面如下:
![3452ea628683757727620d8660e8db9d.png](https://i-blog.csdnimg.cn/blog_migrate/46e28a6c96916ca6cc851efdfe48b400.jpeg)
在列表中按照下图进行选择
![53c18545b68d1ee60f3c3742086722a7.png](https://i-blog.csdnimg.cn/blog_migrate/7621fe069e1fb752b1304d2439b560dd.jpeg)
点击Generate生成,如图所示。
![17df28490073f8fc708f49b81f8f8f69.png](https://i-blog.csdnimg.cn/blog_migrate/2de0212d6a6bdff59da9e9c5291883f2.jpeg)
生成结束后,我们发现D:output-project文件夹中出现了makefile文件,如图所示。
![a485c7de1cb45e9def1bcda95780705d.png](https://i-blog.csdnimg.cn/blog_migrate/47c2b5efe9ec990d6731e1b3f9044379.jpeg)
进入D:output-project文件夹,在该目录下按住shift然后鼠标右键弹出右键菜单,打开命令行窗口,也就是下边截图中的Powershell窗口
![ae3c09dcc848aba5d7409ecd79a1db66.png](https://i-blog.csdnimg.cn/blog_migrate/48aab4ac0e65537be22f11880bcfec3d.jpeg)
在命令行窗口中输入mingw32-make命令,开始编译源代码,如下图所示。
![7cef1937d0206c819abb0c76268b91dc.png](https://i-blog.csdnimg.cn/blog_migrate/f53f57598df940d48d95b78b239887da.jpeg)
等待几分钟编译结束。
![c222392e041ed2f91cd74421a2cbe69d.png](https://i-blog.csdnimg.cn/blog_migrate/ee040bf41f1be96d3a44efac766238f5.jpeg)
编译结束后,我们打开D:output-project文件夹可以看到生成的库文件和protoc.exe。如下图所示。
![ce5d093d7d09a74299267288554bf99e.png](https://i-blog.csdnimg.cn/blog_migrate/32c1b18bc712a2cd1eccb3635598a56c.jpeg)
3. 在QT中配置protobuf
创建Qt项目,在项目的pro文件中添加如下设置:
![3dec23bcab8268b960e12f1ec427023d.png](https://i-blog.csdnimg.cn/blog_migrate/1cf894726c0322a5b66135b65040a49a.jpeg)
protobuf的头文件目录和库目录说明:
1. 根据上边的配置头文件在D:protobuf-3.11.4src目录中
a) 头文件在源码目录的src目录中
2. 动态库目录在D:output-project中
3. 动态库的名字为 libprotobuf.dll在指定的时候
a) –L: 动态库的绝对路径
b) –l:动态库的名字,需要掐头(lib)去尾(dll)