È possibile impacchettarlo come libreria indipendente, installarlo con altre librerie OCaml e accedervi dal proprio progetto come libreria.
Un modo molto semplice per eseguire questa operazione è scrivere un file META per ocamlfind
. Crea una directory dove sei a tuo agio per organizzare il tuo progetto di "biblioteca personale". Supponiamo che tu abbia tools.ml
e tools.mli
e che il tuo codice dipenda da alcuni pacchetti findlib (ad esempio unix
e bigarray
). Si META sarebbe simile a questa:
name="tools"
description="personal collection of utilities"
version="0.1"
requires="unix,bigarray"
archive(byte)="tools.cmo"
archive(native)="tools.cmx"
Dopo aver scritto questo file META, è facile chiedere ocamlfind
a "install" la biblioteca (e rimuoverlo se si vuole), e utilizzarlo nella vostra altri progetti. Per installare, la sintassi è ocamlfind install <name> <meta-file> <file1> <file2> ...
dove <file1>, <file2>..
è il file che si desidera vedere incluso nella directory di installazione. È necessario avere almeno tools.cmi
tools.cmo
(e tools.o
e tools.cmx
per la compilazione nativa), ma è buona norma avere anche tools.mli
per esempio (e, se si desidera fornire il codice, tools.ml
).
ocamlfind install tools META tools.cmi tools.cmo tools.o tools.cmx tools.mli
(Naturalmente tools.cmo
ecc disporre di esistere, che è necessario install
dopo aver compilato il pacchetto. Se avete utilizzato ocamlbuild
, che sono suscettibili di essere in un _build
sottodirectory, così ocamlfind install ... _build/tools.cmo ...
.)
da vostri numerosi progetti, è possibile utilizzare il libreria con facilità, sia utilizzando il toold ocamlfind direttamente, se questo è quello che già fare per compilare i programmi
ocamlfind ocamlc -package tools ....
oppure tramite le strutture fornite da ocamlbuild
, ad esempio, aggiungendo package(tools)
ai tag.
Per reinstallare la libreria se hai fatto una modifica ad esso e vogliono accessibile dai progetti
ocamlfind remove tools
ocamlfind install tools META ...
Si potrebbe anche gestire tutto questo attraverso oasis
, che è un livello sopra ocamlfind/ocamlbuild per automatizzare questo processo. Non ho abbastanza familiarità con oasis
per dare esempi del genere, ma dovrebbe essere altrettanto semplice per un caso così ristretto (una libreria di file), e scalare meglio se in futuro vuoi ampliare la tua libreria (es. può anche gestire la generazione di documentazione, la configurazione di pre-compilazione ...).
Grazie per il tuo commento ... Potresti dare un'occhiata al mio test in OP? – SoftTimur
@SoftTimur: il comando di compilazione corretto nel tuo caso è 'ocamlfind ocamlc -package tools -linkpkg test.ml -o test'. L'opzione '-package tools' aggiunge il pacchetto e' -linkpkg' lo collega per produrre un eseguibile (necessario quando si produce un eseguibile, ma non quando si compila in un '.cmo'). Probabilmente potresti anche usare il pacchetto "ocamlbuild -tag" (tools) "test.byte" (non testato). – gasche
@gashe: 'ocamlfind ocamlc -package tools -linkpkg test.ml -o test' funziona solo quando' test.ml' si trova nella stessa cartella dello strumento 'eseguibile' ... Sai perché? – SoftTimur