为什么dune无法识别ppx_jane?

问题描述 投票:0回答:1

我现在正在用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 无法提供任何有用的信息。它只是到处显示未绑定的模块。任何改进这一点的建议也将受到赞赏。

ocaml dune ppx
1个回答
0
投票

当沙丘还是一个名为

v0.11.0
的实验性构建系统时,发布了
ppx_jane
jbuilder
版本。该软件包只是缺少沙丘用作 ppx 所需的元数据。

更简单的解决方案可能是升级到更新版本的 OCaml、dune 和 ppx_jane。

© www.soinside.com 2019 - 2024. All rights reserved.