Calcul des dépendances
Le calcul de dépendances d'un ensemble de fichiers d'implantation et
d'interface d'une application Objective CAML a un double but. Le premier est
d'obtenir une vision globale des interdépendances entre modules. Le
deuxième est d'utiliser cette information pour ne recompiler que le
strict nécessaire lors de modifications de certains fichiers.
La commande ocamldep prend un ensemble de fichiers
.ml et .mli et affiche les dépendances entre
fichiers dans le format des fichiers Makefile1.
Ces dépendances proviennent de l'utilisation de déclarations globales
d'autres modules, soit en utilisant la notation pointée (ex:
M1.f), soit en ouvrant un module (ex: open
M1).
Supposons écrits les fichiers dp.ml :
let
print_vect
v
=
for
i
=
0
to
Array.length
v
do
Printf.printf
"%f "
v.
(i)
done;
print_newline();;
et d1.ml :
let
init
n
e
=
let
v
=
Array.create
4
3
.
1
4
in
Dp.print_vect
v;
v;;
La commande ocamldep à qui l'on passe les noms de ces
fichiers indiquera les dépendances suivantes :
$ ocamldep dp.ml d1.ml array.ml array.mli printf.ml printf.mli
dp.cmo: array.cmi printf.cmi
dp.cmx: array.cmx printf.cmx
d1.cmo: array.cmi dp.cmo
d1.cmx: array.cmx dp.cmx
array.cmo: array.cmi
array.cmx: array.cmi
printf.cmo: printf.cmi
printf.cmx: printf.cmi
Les dépendances sont calculées pour les compilateurs code-octet
et natif. On lit le résultat de la manière suivante : la production
du fichier dp.cmo dépend des fichiers
array.cmi et printf.cmi. Les fichiers d'extension
.cmi dépendent des fichiers de même nom d'extension
.mli. Il en est de même pour les .ml avec les
.cmo et .cmx.
Les fichiers objet de la distribution n'apparaissent pas dans la liste
des dépendances. En fait le résultat précédent de ocamldep
s'il ne trouve pas des fichiers array.ml et
printf.ml dans le catalogue courant, les trouvera dans le
chemin des bibliothèques de l'installation et produira :
$ ocamldep dp.ml d1.ml
d1.cmo: dp.cmo
d1.cmx: dp.cmx
Pour indiquer de nouveaux chemins de recherche de fichiers à la commande
ocamldep on utilisera l'option de commande -I catalogue
qui ajoute un catalogue aux chemins de recherche.