我已经编译了一个自定义版本的ocaml 4.04.0 (其他人写的)。我可以运行它,并与它交互使用rlwrap和ledit,但我更愿意使用utop运行它。(我不需要自动完成;命令编辑在utop中比在rlwrap或ledit中更好。)
utop在默认情况下显然依赖opam,因为它使用opam switch运行任何版本的ocaml。然而,我很难找到任何关于utop和opam之间关系的文档,或者是关于如何让utop运行一个尚未由opam建立的ocaml版本的文档。man utop、opam --help和重复的网络搜索都没有发现任何结果。虽然这似乎是个坏主意,但我尝试用自定义的可执行文件替换. .opam/4.04.0/bin中的ocaml文件,但是那时可执行文件中内置的额外包是不可用的,所以我对utop正在运行的猜测显然是错误的。我尝试使用自定义ocaml文件作为参数运行utop:utop ./ocaml。基于utop手册页面,我认为这是行不通的。下一步似乎是阅读utop源代码,但作为ocaml的新手,我不愿意这么做,似乎没有必要这么做。
如何使用自己的ocaml可执行文件运行utop?
发布于 2017-04-25 16:12:02
Utop不依赖opam: utop直接构建在OCaml的编译器库之上。因此,它不运行标准的ocaml toplevel无论如何。如果要在自定义OCaml版本中使用utop,则需要使用相应的自定义编译器库构建utop版本。
最简单的方法可能是创建您自己的opam编译器条目,例如使用opam-compiler-conf,然后使用opam switch切换到编译器的这个版本。
https://stackoverflow.com/questions/43615188
复制相似问题