Используйте ocamlfind с переводчиком ocaml, без компиляции

У меня есть файл main.ml который использует какой-то пакет, который делает команду ocaml main.ml не удалось и сообщить об этой ошибке:

Error: Unbound module X

И единственное решение, которое я нашел, это запустить:

ocamlbuild main.native -use-ocamlfind -package X
./main.native

Но это компилирует файл. Есть ли способ просто запустить обычный переводчик ocaml (ocaml main.ml) с некоторыми дополнительными флагами, чтобы найти пакет?

3 ответа

Самый простой способ, вероятно, использовать topfind и добавить #require "core" в верхней части вашего файла. Если вы хотите избежать добавления директив верхнего уровня в ваш файл, вы можете использовать ocamlfind query -i-format -r для расчета необходимых включаемых каталогов:

 ocaml $(ocamlfind query -i-format -r core) main.ml

Вы можете поместить в начало вашего файла некоторые директивы верхнего уровня, которые находят и загружают необходимые модули. Например, когда я хочу использовать Core Библиотека в моем скрипте я вставляю:

#use "topfind";;
#thread;;
#require "core";;

open Core.Std
(* Code of my script *)

Использовать topfind пакет ocamlfind должен быть установлен (opam install ocamlfind)

Вы также можете запросить путь вашего пакета к ocamlfind:

ocamlfind query package_X

Это вернет путь вашего пакета: /path_to/packageX

А потом:

ocaml main.ml -I /path_to/packageX
Другие вопросы по тегам