Certains modules livrés avec OCaml comme Unix
et Bigarray
ont leurs propres .cmx
et .cmxa
fichiers dans ocamlopt -where
(qui est ~/.opam/4.03.0/lib/ocaml
sur mon système dans mon commutateur de courant OPAM).OCaml détecter statiquement dépendance à la bibliothèque non Pervasives dans la distribution norme
Y at-il un moyen de déterminer sans avoir à recompiler les fichiers source dépendent des bibliothèques de ces « spéciales » dans la distribution standard? J'ai l'intention de consommer cette sortie plus tard dans un Makefile.
Le programme suivant example.ml
open Unix;;
Unix.system "echo hi";;
peut être compilé avec ocamlfind ocamlopt -package unix -linkpkg example.ml
. Je ne suis pas sûr de savoir comment le compiler sans passer par le wrapper ocamlfind
.
Je me demande s'il y a un moyen de détecter statiquement que la non liée en ce fichier module de Unix
correspond à « quelque chose » dans la distribution standard et de faire rapport unix.cmxa
en tant que dépendance. ocamldep
ne semble pas le signaler comme une dépendance par défaut. Indique simplement que les différents fichiers d'objets et d'interfaces pouvant être produits à l'aide de example.ml
dépendent de example.ml
. J'espérais soit un message d'erreur se plaignant que ocamldep ne comprend pas le module Unix
ou une indication qu'il est nécessaire de construire les objets.
$ ocamldep -all example.ml
example.cmo example.cmi : example.ml
example.cmx example.o example.cmi : example.ml
'ocamlfind ocamlopt -verbose -package unix -linkpkg example.ml' montre la commande exécutée pour compiler' example.ml'. – camlspotter