当前位置: 首页 > news >正文

使用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

相关文章:

  • 【软考--软件设计师】10.2 关系型数据库
  • 实变与泛函题解-心得笔记【16】
  • Dask心得与笔记【2】
  • 《卷积神经网络到Vision Transformer:计算机视觉的十年架构革命》
  • LeetCode--38.外观数列
  • docker部署后端服务的脚本
  • 华为交换机SSH登录报错--Key exchange failed.
  • Java-Scanner类
  • 深入解析Java 内部类
  • 单电机FOC与多电机协同交叉耦合控制Simulink仿真方案
  • 深入浅出:AWS Cognito 认证机制详解
  • cf 禁止http/1.0和http/1.1的访问 是否会更安全?
  • easywechat 6.X AccessToken刷新问题
  • Linux【9】-----Linux系统编程(线程池和并发socket编程 c语言)
  • vue3中的Treeshaking特性是什么,并举例说明
  • TCP 在高速网络下的大数据量传输优化:拥塞控制、效率保障与协议演进​
  • 咨询进阶——125页麦肯锡业务流程规划方法论及流程规划案例【附全文阅读】
  • progress telerik fiddler解决微软账户登录80190001错误问题
  • docker解析
  • 函数指针与指针函数