2010-10-27 102 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使默認命令成爲正確的命令。這是最簡單的方法。