2010-10-27 79 views
4

我使用emacs和tuareg模式,并且我总是在emacs里打开ocaml repl。我想知道是否有一种方法可以从repl内编译基本的OCaml测试文件,因此我不必将编译作为系统命令运行。从OCaml内部编译repl

+0

这听起来像你也可能想要编译的文件加载到顶层?您可以使用其他参数重新启动顶层,也可以使用'#load“文件来包含它。 – nlucaroni 2010-10-27 20:42:18

回答

1

据我所知,没有,但你可以很容易地从emacs内运行编译。

如果使用M-x compile命令(C-c C-c使用tuareg mode),编辑在Emacs中运行“编译模式”,这是相当不错的工作。特别是,如果出现编译错误(M-x goto-next-error或“C-x`”),它允许您直接跳转到代码中的错误位置。

使用编译命令,您可以选择(shell)命令来运行编译。您可以直接调用ocaml编译器(通常为ocamlc -c foo.ml),或者使用ocamlfind来方便使用外部库进行编译,甚至可以使用makeocamlbuild来为您自动编译大部分编译。通常,如果您有一个使用不同源文件的小项目,使用main.ml文件,ocamlbuild main.byte将执行从其生成可执行文件的工作。

编辑:当然,您可以使用Sys.command函数从顶级内部调用系统命令。但我没有看到这一点。

1

“repl”是指“读取评估打印循环”,例如您可能已经在Emacs中运行run-caml

有一个Emacs命令compile用于编译,无论你在做什么或正在编辑的文件。它通常与C-C C-C绑定,但似乎不在我的inf-caml版本中。尽管如此,你可以将它绑定到任何方便的序列(可能不是C-c C-c,因为它用于中断OCaml顶层)。

您可以更改由compile启动的命令(默认为make -k)。您的命令行应保留在Emacs会话中。如果你不喜欢它在会话之间丢失,写一个Makefile使默认命令成为正确的命令。这是最简单的方法。