我现在正在用OCaml v4.06编写一个项目,并且我已经安装了ppx_jane v0.11.0。实际上,环境是基于 docker 镜像。 现在这是沙丘文件
(menhir
(modules parser))
(ocamllex lexer)
(executable
(name compiler)
(libraries core)
(preprocess (pps ppx_jane)))
我认为这很简单,但是运行
dune build compiler.exe
会输出
File "dune", line 9, characters 18-26:
9 | (preprocess (pps ppx_jane)))
^^^^^^^^
Error: Ppx dependency on a non-ppx library "ppx_jane". If "ppx_jane" is in
fact a ppx rewriter library, it should have (kind ppx_rewriter) in its dune
file.
-> required by _build/default/compiler.exe
我该如何解决这个问题?
目前我正在使用
corebuild -use-ocamlfind -use-menhir
并且效果很好。所以我认为 ppx_jane 应该可以在这个环境中工作。
此外,我转向沙丘的原因是,对于这些裸文件,VSCode 无法提供任何有用的信息。它只是到处显示未绑定的模块。任何改进这一点的建议也将受到赞赏。
当沙丘还是一个名为
v0.11.0
的实验性构建系统时,发布了 ppx_jane
的 jbuilder
版本。该软件包只是缺少沙丘用作 ppx 所需的元数据。
更简单的解决方案可能是升级到更新版本的 OCaml、dune 和 ppx_jane。