1. 下载cmake并安装, cmake的版本可选最新版
1.1官网链接:https://cmake.org/download/
打开官网链接:下拉找到如下图所示的地方
我下载的是第二个window ×64 zip的, 这个解压即可以使用,不用安装,第一个需要安装,大家需要哪个用哪个吧,都行
我个人使用的版本:CMake 3.21.1下面是我的网盘链接
链接:https://pan.baidu.com/s/1PaVhE9Ekt7Uf5y0ITQ1kMw
提取码:1111
1.2下载完成后解压进入软件的bin目录,双击cmake hui.exe,能打开即可
要注意的是,解压的路径中不能有中文路径,否则后面会出现莫名的错误
2. 下载protobuf的源码:https://github.com/google/protobuf/releases
这个网站需要访问外网,里面有一系列版本和不同语言的源码,我这里用的是C++的,不建议使用最新版本,容易出bug, 点击蓝色所对应的文件,即可下载
如果不能访问外网或者访问速度过慢或者出现问题,可以下载我使用的版本, 我使用的是3.15.0版本的,我的网盘链接如下
链接:https://pan.baidu.com/s/14Sm8EIS-Az7coP48xVPjUA
提取码:1111
可以在D盘建立一个文件夹,解压到该文件夹中中,我的文件夹名是protobuf_vision
在该文件夹中在建立一个output文件夹,用于存储编译protobuf产生的文件
也要注意的是,解压的路径中不能有中文路径,否则后面会出现莫名的错误
前期工作准备完成,正式开始撸了
3,打开CMake这个软件
1.点击浏览资源,进入我们下载的源码目录,cmake
, 点击选择文件夹
3.点击browse build
,也就是我们编译后产生文件的地方,进入我们前面建立的文件夹output
, 点击选择文件夹,因为我编译过了,所以里面已经有文件了,没有编译过是空的文件夹
4.点击configure, 配置
5.然后选择Mingw makefiles
, 如下图
6.点击finish, 完成配置后,如下图
如果点击finish后出现这些错误提示的
解决方案在我的另一篇文章里
cmake配置Qt的protobuf环境时出现Error in configuration process, project files may be invalid解决办法
7. 把一些√√去掉或者加上去,如下图所示
8. √选Advanced,在下面的地方加上-std=gnu++11
, 如图所示
9. 点击generate, 产生要编译的文件
如下图,代表成功了
10. 我们去文件夹output查看我们产生的文件,下图是我已经编译过的,文件比没有编译过的要多得多,你们过了步骤12后,也会产生那么多文件的,先别管那么多,继续下一步先
11. 在output文件目录下按住shift然后鼠标右键弹出右键菜单,选择在此处打开Powershell
窗口,打开后如图所示
12.我们输入命令mingw32-make
,回车
12.1 如果出现这种提示的,就需要添加Qt mingw32
的环境变量了,我们要知道Qt的安装位置, 复制地址即可![在这里插入图片描述](https://img-blog.csdnimg.cn/dec463824931471da9f1b5da0719f068.png)
如果是出现这种提示的
将Qt安装目录Tools\mingw730_32\bin
添加到环境变量中即可
12.2 添加好环境变量后,进行上述步骤,回车然后就会进行编译,会有编译进度显示和一大堆的编译信息
我的这里编译出了点问题,到93%就停了,不过没事,经我测试,不影响后序的使用,没出问题当然是最好的
会发现产生了一大堆的文件,最重要的是protoc.exe
这个文件,这是我们编译.proto
的必备文件
13. 在这里新建一个protobuild.bat
的文件,文件内容如下为protoc --cpp_out=./ %1%
14. 我们进入cmd命令行,然后切换进output目录后,输入命令,protobuild 要编译的文件
,或者直接输入protoc --cpp_out=./ 要编译的文件
, 也就是在当前目录下生成编译好的文件![在这里插入图片描述](https://img-blog.csdnimg.cn/aba0051a7f294172b3fce42c06470b55.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Y-u5Y-uLuS4gOWPrueCuQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
我这里使用的是bike.proto文件,文件内容如下
syntax = "proto2";
package tutorial;
message mobile_request
{
required string mobile = 1;
}
message mobile_response
{
required int32 code = 1; //响应代号
required int32 icode = 2; //验证码
optional string data = 3; //失败原因
}
message login_request
{
required string mobile = 1; // 手机号码
required int32 icode = 2; // 验证码
}
message login_response
{
required int32 code = 1; // 响应代号
optional string desc = 2; // 验证码
}
message recharge_request
{
required string mobile = 1; // 手机号码
required int32 amount = 2; // 充值金额
}
message recharge_response
{
required int32 code = 1; // 响应代号
optional string desc = 2; // 验证码
required int32 balance = 3; // 最新的余额
}
message account_balance_request
{
required string mobile = 1;
}
message account_balance_response
{
required int32 code = 1; // 响应代号
optional string desc = 2; // 验证码
required int32 balance = 3;
}
message list_account_records_request
{
required string mobile = 1;
}
message list_account_records_response
{
required int32 code = 1; // 响应代号
optional string desc = 2; // 验证码
message account_record
{
required int32 type = 1; // 0 : 骑行消费, 1 : 充值, 2 : 退款
required int32 limit = 2; // 消费或者充值金额
required uint64 timestamp = 3; // 记录发生时的时间戳
}
repeated account_record records = 3;
}
message list_travel_records_request
{
required string mobile = 1;
}
message list_travel_records_response
{
required int32 code = 1; // 响应代号
optional string desc = 2; // 验证码
message travel_record
{
required uint64 stm = 1; // start timestamp
required uint32 duration = 2; // 骑行时长
required uint32 amount = 3; // 所耗金额
}
required double mileage = 3; // 里程
required double discharge = 4; // 排放
required double calorie = 5; // 卡路里
repeated travel_record records = 6;
}
当前目录生成编译好的文件如下图所示
15. 打开Qt, 建立一个项目,添加我们生成的pb.cc
和pb.h
文件,编译后此时我们会发现存在一大堆的问题,报错,怎么办呢,我们来接着下一步
16. 我们进入项目的.pro文件,在如下位置加入protobuf的路径和链接库位置
我的路径是:
INCLUDEPATH += D:\protobuf_vision\protobuf-3.15.0\src
LIBS += -LD:\protobuf_vision\output -lprotobuf
- 再次进行编译,发现报错全部没有了,ok, 完成啦, 写文章不容易,对你有帮助的点赞或收藏在走哦
-------------毕设遇到的坎-写于2021-10-08 半夜0:28