首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ReasonML中使用protobuf?

如何在ReasonML中使用protobuf?
EN

Stack Overflow用户
提问于 2018-04-01 13:03:03
回答 1查看 677关注 0票数 2

我有一组protobuf类型,并希望生成用于序列化的reasonML代码。到目前为止,我发现ocaml-protoc无法安装到我的系统上。使用docker,

代码语言:javascript
复制
FROM ocaml/opam:alpine
RUN opam remote add dev git://github.com/mirage/mirage-dev
RUN opam depext -i mirage

RUN opam depext conf-m4.1
RUN yes | opam install ocaml-protoc

然后运行命令:

代码语言:javascript
复制
docker run \
        --mount type=bind,source=$(PWD)/../src/proto,target=/home/opam/ocaml \
        --mount type=bind,source="$(PWD)"/../../proto,target=/home/opam/proto \
        -ti eb1b1ed36a35 \
        ocaml-protoc -ml_out=/home/opam/ocaml /home/opam/proto/chat.proto > /dev/null"

我已经能够编译一组ml/mli文件。但是,这些文件依赖于一些未安装的库,比如Pbrt。摘录:

代码语言:javascript
复制
let rec decode_friend_event_etype d = 
  match Pbrt.Decoder.int_as_varint d with
  | 0 -> (Chat_types.Arrival:Chat_types.friend_event_etype)
  | 1 -> (Chat_types.Departure:Chat_types.friend_event_etype)
  | _ -> Pbrt.Decoder.malformed_variant "friend_event_etype"

有没有一种干净的方法来解决这个问题,而不需要安装任何本地库?无论包含什么,都必须提供源代码,以便bucklescript能够将其编译成JS。

出现在脑海中的解决方案是生成公共依赖项(例如Pbrt)以及原型实现。有没有人找到解决这个问题的方法?

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 17:09:39

有一个bucklescript runtime和一个demo project展示了如何使用它。

我自己还没有尝试过,但据我所知,您必须将bucklescript运行时添加为一个普通的bucklescript依赖项

代码语言:javascript
复制
npm install bs-ocaml-protoc-json

将其添加到bs-dependencies in bsconfig.json

代码语言:javascript
复制
{
  ...
  "bs-dependencies": [ "bs-ocaml-protoc-json"]
}

然后使用-bs标志用ocaml-protoc生成特定于bucklescript的代码:

代码语言:javascript
复制
ocaml-protoc -bs -ml_out=/home/opam/ocaml /home/opam/proto/chat.proto

现在,您应该已经在/home/opam/ocaml中生成了源代码,并且假设您已经正确地设置了一个将其作为源文件夹的bucklescript项目,应该能够使用bsb -make-world对其进行编译

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49594975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档