Компилировать из реплик OCaml - PullRequest
4 голосов
/ 27 октября 2010

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

Ответы [ 2 ]

1 голос
/ 27 октября 2010

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

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

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

1 голос
/ 27 октября 2010

Насколько мне известно, нет, но вы можете легко запустить компиляцию из Emacs.

Если вы используете команду M-x compile (C-c C-c в режиме tuareg ), компиляция запускается в "режиме компиляции" 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. Но я не вижу смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...