我正在使用带有tuareg模式的emacs,我总是在emacs中打开ocaml repl。我想知道是否有一种方法可以在repl中编译基本的OCaml测试文件,所以我不必将编译作为系统命令运行。
答案 0 :(得分:1)
据我所知,没有,但您可以轻松地从emacs中运行编译。
如果您使用M-x compile
命令(C-c C-c
使用tuareg mode),编译将在emacs“编译模式”中运行,这对于使用起来相当不错。特别是,它允许您在编译错误(M-x goto-next-error
或“C-x”)的情况下直接跳转到代码中的错误位置。
使用compile命令,您可以选择(shell)命令来运行编译。您可以直接调用ocaml编译器(通常为ocamlc -c foo.ml
),或使用ocamlfind
来促进使用外部库进行编译,甚至可以make
或ocamlbuild
自动执行大部分编译为了你。通常,如果您有一个使用不同源文件的小项目,使用main.ml
文件,ocamlbuild main.byte
将完成从中构建可执行文件的工作。
编辑:当然,您可以使用Sys.command
函数从顶层内调用系统命令。但我不明白这一点。
答案 1 :(得分:1)
“repl”是指“读取 - 评估 - 打印循环”,您可能已经进入了例如在Emacs中运行run-caml
。
有一个Emacs命令compile
,用于编译,无论您正在做什么或正在编辑的文件。它通常绑定到C-c C-c,但似乎不在我的版本的inf-caml中。不过,您可以将它绑定到任何方便的序列(可能不是用于中断OCaml顶层的C-c C-c)。
您可以更改compile
启动的命令(默认为make -k
)。您的命令行应保留在Emacs会话中。如果您不喜欢它在会话之间丢失,请编写一个Makefile以使默认命令正确。这是最简单的方法。