2015-12-01 4 views
2

Я новичок в OCaml, и я хотел бы знать, как написать код ocaml в файл, а затем скомпилировать его для запуска, когда захочу. Теперь я использую OCaml, набрав ocaml на терминале mac или linux и написав код, но когда я закончил и я закрою программное обеспечение, я потеряю всю работу.Компиляция и запуск в OCaml

ответ

6

Есть много вариантов, но самым простым (по моему мнению) является использование ocamlbuild. Если у Вас есть свой код в файле program.ml, затем

ocamlbuild program.native 

будет скомпилировать программу в родной двоичном, так что вы можете запустить его так просто, как:

./program.native 

Существует также ярлык, который позволяет компилировать и запускать программу в качестве одного из действий:

ocamlbuild program.native -- 

вы можете передать аргументы в вашу программу после -- знака.

Если ваша программа состоит из более чем одного файла, это не проблема, так как ocamlbuild сканирует ее и автоматически создает все зависимости в правильном порядке.

Если вашей программе необходимы внешние библиотеки, вы можете указать их с помощью опции -pkg или -pkgs. Как это:

ocamlbuild -pkg lwt program.native 
+1

Вы также можете использовать компилятор 'ocamlc' bytecode и собственный компилятор' ocamlopt', например. в вашем 'Makefile' –

+0

В чем разница между' ocamlbuild' и 'ocamlc'? –

+1

'ocamlc' и' ocamlopt' являются компиляторами. 'ocamlbuild' - это инструмент автоматизации, который использует их за сценой. Вы можете использовать опцию '-classic-output'' ocamlbuild', чтобы посмотреть, что на самом деле происходит. – ivg

5

Я думаю, этот учебник - Compiling OCaml projects может помочь. В нем описываются основы компиляции OCaml. Он обсуждает ocamlc и ocamlopt компиляторы в глубину и другие инструменты компилятора.

+0

Это действительно помогает. Благодарю. –

+2

Я изучил все учебники 'ocaml.org' при изучении OCaml. Помогли! –

0

Если вы используете Сердечник Джейн стрит, то вам следует использовать команду corebuild для компиляции, которая включает в себя кучу дефолтов после ocamlbuild:

ocamlbuild \ -use-ocamlfind \ -pkg core \ -tag "ppx(ppx-jane -as-ppx)" \ -tag thread \ -tag debug \ -tag bin_annot \ -tag short_paths \ -cflags "-w A-4-33-40-41-42-43-34-44" \ -cflags -strict-sequence \ "[email protected]"

Я получил эту here.

Смежные вопросы