2010-10-27 1 views
4

Я использую emacs с режимом tuareg, и у меня всегда есть ocaml repl, открытый внутри emacs. Мне было интересно, есть ли способ скомпилировать базовые тестовые файлы OCaml из реплики, поэтому мне не нужно запускать компиляцию в виде системной команды.Компиляция из OCaml repl

+0

Похоже, вы также можете захотеть, чтобы скомпилированные файлы загружались на верхний уровень? Вы можете либо перезапустить toplevel с дополнительными аргументами, либо использовать файл '#load ', чтобы включить его. – nlucaroni

ответ

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, чтобы облегчить компиляцию с использованием внешних библиотек и даже make или ocamlbuild, чтобы автоматизировать большую часть компиляции для вас. Как правило, если у вас небольшой проект с использованием разных исходных файлов, с файлом main.ml, ocamlbuild main.byte выполнит задачу создания из него исполняемого файла.

Редактировать: конечно, вы можете вызвать системную команду из верхнего уровня, используя функцию Sys.command. Но я не вижу смысла.

1

Под «repl» вы имеете в виду «цикл чтения-eval-print», который, возможно, вы использовали, например, для запуска run-caml в Emacs.

Существует команда Emacs, compile, для компиляции независимо от того, что вы делаете, или файлов, которые вы редактируете. Обычно он связан с C-c C-c, но, похоже, не в моей версии inf-caml. Тем не менее, вы можете привязать его к любой удобной последовательности (возможно, не C-c C-c, которая используется для прерывания OCaml toplevel).

Вы можете изменить команду, запущенную compile (по умолчанию make -k). Ваша командная строка должна быть сохранена в сеансе Emacs. Если вам не нравится, что он потерян из сеанса в сеанс, напишите Makefile, чтобы команда по умолчанию была правильной. Это самый простой способ.