Вы можете упаковать ее как независимую библиотеку, установить ее с другими библиотеками OCaml и получить к ней доступ из своего проекта, как библиотеку.
Очень простой способ сделать это - написать файл META для ocamlfind
. Создайте каталог там, где вам удобно держать вас в «личной библиотеке» проекта. Предположим, у вас есть tools.ml
и tools.mli
, и ваш код зависит от некоторого пакета findlib (например, unix
и bigarray
). Ваш МЕТА будет выглядеть так:
name="tools"
description="personal collection of utilities"
version="0.1"
requires="unix,bigarray"
archive(byte)="tools.cmo"
archive(native)="tools.cmx"
После того, как вы написали этот файл META, легко попросить ocamlfind
«установить» библиотеку (и удалить ее, если хотите) и использовать ее в других ваших проектах. Для установки используется синтаксис ocamlfind install <name> <meta-file> <file1> <file2> ...
, где <file1>, <file2>..
- это файл, который вы хотите видеть включенным в каталог установки. Вы должны по крайней мере иметь tools.cmi
tools.cmo
(и tools.o
и tools.cmx
для нативной компиляции), но рекомендуется также иметь tools.mli
, например (и, если вы хотите предоставить код, tools.ml
).
ocamlfind install tools META tools.cmi tools.cmo tools.o tools.cmx tools.mli
(Конечно, tools.cmo
и т. Д. Должны существовать, то есть вы должны install
после того, как скомпилировали свой пакет. Если вы использовали ocamlbuild
, они, вероятно, находятся в подкаталоге _build
, поэтому ocamlfind install ... _build/tools.cmo ...
.)
Из ваших многочисленных проектов вы можете легко использовать свою библиотеку, либо с помощью функции ocamlfind напрямую, если это то, что вы уже делаете для компиляции своих программ
ocamlfind ocamlc -package tools ....
или, например, с помощью ocamlbuild
, добавив package(tools)
к вашим тегам.
Чтобы переустановить библиотеку, если вы внесли в нее изменения и хотите, чтобы она была доступна из ваших проектов
ocamlfind remove tools
ocamlfind install tools META ...
Вы также можете обрабатывать все это через oasis
, который является слоем поверх ocamlfind / ocamlbuild для автоматизации этого процесса. Я не достаточно знаком с oasis
, чтобы приводить такие примеры в полную силу, но он должен быть одинаково простым для такого ограниченного случая (библиотека из одного файла) и лучше масштабироваться, если позже вы захотите расширить свою библиотеку. (например, он также может обрабатывать создание документации, конфигурацию перед компиляцией ...).