Используйте 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