当前位置: 首页 > 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
http://www.lqws.cn/news/557695.html

相关文章:

  • 解决clion远程编程发现不了部分头文件问题
  • 如何在FastAPI中打造坚不可摧的Web安全防线?
  • 前端打印计算单位 cm、mm、px
  • COLT_CMDB_linux_zookeeperInfo_20250628.sh
  • JavaScript正则表达式之正向先行断言(Positive Lookahead)深度解析
  • MCPA2APPT:基于 A2A+MCP+ADK 的多智能体流式并发高质量 PPT 智能生成系统
  • 数字孪生技术赋能UI前端:实现虚拟与现实的无缝对接
  • InfluxDB 3 Core数据库管理指南:从概念到实操的完整流程
  • 单元测试和集成测试的区别
  • 正交视图三维重建 笔记 2d线到3d线
  • 【Python练习】017. 导入math模块并使用其sqrt函数计算平方根
  • ReactNative【实战系列教程】我的小红书 2 -- 快捷登录、手机号密码登录
  • 一站式了解SPI机制
  • NVIDIA 开源高性能语音识别模型:Parakeet TDT 0.6B V2 登顶 OpenASR 榜单
  • 【算法深练】单调栈:有序入栈,及时删除垃圾数据
  • 代理与反射
  • 基于LQR控制器的六自由度四旋翼无人机模型simulink建模与仿真
  • 微软人工智能证书AI-102 | 如何快速通过?
  • 桌面小屏幕实战课程:DesktopScreen 16 HTTP
  • 【软考--软件设计师】11 关系型数据库
  • WebRTC(十二):DTLS
  • 关于前端页面上传图片检测
  • 暑假复习篇之运算与逻辑
  • UI前端大数据可视化创新:利用AR/VR技术提升用户沉浸感
  • 什么是集中刷新,分散刷新,和异步刷新
  • 从 AJAX 到 axios:前端与服务器通信实战指南
  • 2023国赛linux的应急响应-wp
  • Re--攻防世界-基础android
  • C++ vector 完全指南:从入门到精通
  • 源码运行效果图(六)