Puede empaquetarlo como una biblioteca independiente, instalarlo con otras bibliotecas OCaml y acceder a él, desde su proyecto, como una biblioteca.
Una manera muy simple de hacer esto es escribir un archivo META para ocamlfind
. Cree un directorio en el que se sienta cómodo para realizar su proyecto de "biblioteca personal". Supongamos que tiene tools.ml
y tools.mli
, y su código depende de algún paquete findlib (por ejemplo, unix
y bigarray
). Usted META se vería así:
name="tools"
description="personal collection of utilities"
version="0.1"
requires="unix,bigarray"
archive(byte)="tools.cmo"
archive(native)="tools.cmx"
Una vez que haya escrito este archivo META, es fácil pedir ocamlfind
a "instalar" la biblioteca (y quitarlo si lo desea), y lo utilizan en su otra proyectos. Para instalar, la sintaxis es ocamlfind install <name> <meta-file> <file1> <file2> ...
donde <file1>, <file2>..
es el archivo que desea ver incluido en el directorio de instalación. Debe tener al menos tools.cmi
tools.cmo
(y tools.o
y tools.cmx
para la compilación nativa), pero es una buena práctica tener también tools.mli
por ejemplo (y, si desea proporcionar el código, tools.ml
).
ocamlfind install tools META tools.cmi tools.cmo tools.o tools.cmx tools.mli
(Por supuesto tools.cmo
etc. tienen que existir, es decir que debe install
después de que haya compilado su paquete. Si ha utilizado ocamlbuild
, es probable que sea en un subdirectorio _build
, por lo ocamlfind install ... _build/tools.cmo ...
.)
de sus numerosos proyectos, se puede utilizar fácilmente su biblioteca, ya sea usando el toold ocamlfind directamente si esto es lo que ya lo hacen para compilar sus programas
ocamlfind ocamlc -package tools ....
oa través de las instalaciones provistas por ocamlbuild
por ejemplo, agregando package(tools)
a sus etiquetas.
Para volver a instalar la biblioteca de si ha realizado un cambio a él y quiere que se puede acceder desde sus proyectos
ocamlfind remove tools
ocamlfind install tools META ...
También puede manejar todo esto a través oasis
, que es una capa en la parte superior de ocamlfind/ocamlbuild para automatizar este proceso. No estoy lo suficientemente familiarizado con oasis
para dar ejemplos de este tipo fuera de mi cabeza, pero debería ser igualmente simple para un caso tan restringido (biblioteca de un archivo), y escalar mejor si luego desea ampliar su biblioteca (por ej. . También puede manejar generación de documentación, configuración de precompilación ...).
Gracias por su comentario ... ¿Podría echar un vistazo a mi prueba en OP? – SoftTimur
@SoftTimur: el comando de compilación correcto en su caso es 'ocamlfind ocamlc -package tools -linkpkg test.ml -o test'. La opción '-package tools' agrega el paquete, y' -linkpkg' lo vincula para producir un ejecutable (necesario cuando se produce un ejecutable, pero no cuando se compila a '.cmo'). Probablemente también podría usar el paquete 'ocamlbuild -tag '' (herramientas) '' test.byte' '(no probado). – gasche
@gashe: 'ocamlfind ocamlc -package tools -linkpkg test.ml -o test' funciona solo cuando' test.ml' está en la misma carpeta que la 'herramienta ejecutable' ... ¿Sabe por qué? – SoftTimur