使用cmake+vs2022编译win环境下grpc(不建议拉取最新版本grpc(注意本文时间是2025/6/28))
前言
- 最近在学习B站上大佬的视频恋恋风辰zack,本文主要记录自己配置grpc时出现的一些问题,供大家参考
- 这里说明一下,我在配置时,基本时能用最新版,就会尽量去用最新版的
- 注意请看个大概再操作,因为我是记录配置grpc的过程,所以也会记录一些错误的过程
1.grpc下载
- 下载grpc时我是直接在GitHub拉取,但拉取时用https会总是断,所以我使用的ssh拉取的(当然你先试一下https能否能拉取到,后面的同理,能拉取到的话,后面我说ssh的,你跳着看就好啦),包括后面子模块,但网络还是有些许问题,可以使用Steam++去加速一下,grpc下载到的目录为了方便,我跟恋恋风辰zackup主的是一样的,
- 在用ssh拉取之前可以先测试一下
ssh -T git@github.com
像这样就是成功了
- 下载grpc,我没有去选择版本,默认拉取最新的(最新版的子模块在vs编译时会出问题)
git clone git@github.com:grpc/grpc.git
查询grpc版本(要进入grpc目录查):
git describe --tags
拉取子模块,可以像大佬恋恋风辰zack那样去修改.gitmodules
,改成ssh的,可以用Notepad–的查找有个替换的功能把https://github.com/
换成git@github.com:
就好了,或者用git命令也行
使用 sed 自动替换 .gitmodules 中的 HTTPS 为 SSH
同步更改到 git 配置
初始化子模块
sed -i 's|https://github.com/|git@github.com:|g' .gitmodules
git submodule sync
git submodule update --init --recursive
拉取完后,检测一下子模块(记得点进grpc\third_party目录下去看每个子模块文件夹看看是否为空):
git submodule status --recursive
关于cmake,nasm,go,perl的下载,我就不多说了,大家可以去看up主的教程,我这里就只把我下载版本列出来看
- 到这一步基本都装完了,只剩编译,cmake+vs编译大家可以看up主恋恋风辰zack,看着视频更好操作。
- 说下最新版grpc会出现的错误,主要错误都在编译protobuf,以下错误都是因为protobuf错误导致的
- 我捣鼓了几天放弃了( ̄﹏ ̄;),放弃了,切换了版本,切换版本如果已经编译了的,记得把编译的文件夹删掉,
查看可用版本标签,按版本号排序:
git tag -l | sort -V
切换版本的git命令(我是问了AI的建议推荐使用1.60.0版本):
git checkout v1.60.0
git submodule update --init --recursive
检测一下子模块:
git submodule status
再编译一遍就没有问题了(也可以先检测下你觉得可能会出错的子模块,例如D:\cppsoft\grpc\visualpro\third_party\protobuf,都会有sln)。
项目配置grpc
- 基本可以看up主的教程,我只说几个特殊的点
我前面的boost没有按照up主那样去调整boost文件夹的路径,假如你跟我一样是如下图的路径:
那你的boost路径该是D:\cppsoft\boost_1_88_0\include\boost-1_88
- 还有一点就是看up主的教程推测,在
grpc1.34.0
版本还是有absl_leak_check_disable.lib
,但grpc1.60.0
是没有的,估计是和absl_leak_check.lib
合在一起了,记得去掉,
链接器->常规->附加库目录要多加一条:D:\cppsoft\grpc\visualpro\third_party\abseil-cpp\absl\profiling\Debug