找回密码
 立即注册
查看: 292|回复: 1

Bazel + Protobuf入坑常见问题

[复制链接]
发表于 2022-7-22 16:19 | 显示全部楼层 |阅读模式
吐槽一下google这种烂公司造出来的烂工具
google的工具是挺好的,但是上手门槛太特么高了。在aws,openstack, azure这种下载key pair就能连通的竞品环境下不仅东西贵到爆炸,学生机都不知道哪个免费哪个不免费,毒瘤的连接方式让小白折腾半天连都连不上机器。

首先是编译到google/http://descriptor.cc卡住这个问题,那你机器内存太小了,建议分配一下4个G内存再来,这个我一开始以为是aws不支持,后来发现换了azure和google cloud都不行,学生机配置太小,bazel-proto根本跑不起来,可算让我明白“免费的才是最贵的”这个道理了
第二个问题,就是
@com_google_protobuff//:cc_toolchain' does not have mandatory provider 'ProtoInfo'这个在中英文互联网应该搜不到,能查得到解释是在bazel 4.0.0的时候某些属性被“flip”了,这个到底是什么意思我真没搞懂,我建议大家如果不是特殊需要别试着去解决这个问题,因为没啥卵用,bazel4不支持bazel3当中关于protobuf的内容,关键是官方也没有一个公开的渠道说这个怎么解决,偶尔几句回复都是谜语人一般的信息,底下回复最多的就是“What do you mean by xxxxx”。说真的,明明kubernetes文档和教程这么详细,这种问题起码也应该有人出来提一下。万般无奈之下,想到既然解决不了,那我直接回滚啊
sudo apt remove bazel
sudo apt-get install bazel-3.0.0然后就解决了,可以编译到最后一步了,然后显示在cpp文件里,.pb.h文件找不到,按理说这个是框架自动生成的文件,不该找不到才是,然而就这个破问题卡了半天,给卡吐血了。
然后我在github上搜了bazel + proto, 结果搜出来的repo基本就没几个能正常运行的,可能是有些依赖没装。对我这个小白来说已经是gg了。然后偶然打开gitee,发现有一个demo,里面的proto和其他文件是分文件夹放的,然后分了不同文件夹就解决了,调用时需要经过如下几个转换,以转换成cpp为例
proto_library (srcs填上proto)-> cc_proto_library -> cc_library -> cc_binary(可执行文件)
经过这么一番映射才能正常运行和include。然后终于跑起来了。我尼玛直接泪奔了。


具体的demo的链接在这里:GitHub - tiany7/Cloud-Computing: This is the cloud computing project by tiany7. 是我和 @overstar 一起搞的小项目,相关code在wwtest和wwprotos里面
大家有兴趣可以去看一下,不求star,只希望能帮助有需要的人,中文互联网这方面真的太匮乏了,有些内容根本搜不到,而且看google的意思也是懂得自然懂,不懂得不知道也没什么,也无从解决

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2022-7-22 16:20 | 显示全部楼层
proto_library+cc_proto_library可以用@com_google_protobuf//:protobuf.bzl中的cc_proto_library代替
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 14:50 , Processed in 0.108006 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表