Dear all,

I have 2 libraries, say A and B where B depends on A, and an executable C which uses both A and B. Each of these components is a separate (oasis) project. I have some test executables in B which work fine. However, when I compile C, the compiler complains that it has no implementation for a module defined in A and used in B. The compilation (linking) command of C contains "-package" options for A and B, it is of the form:

ocamlfind ocamlopt ... -package B -package A ... C.cmo

If I permute the two package options, like in

ocamlfind ocamlopt ... -package A -package B ... C.cmo

the compilation works fine. It is not really clear to me, but I thought the order of the -package options did not matter, because findlib would store the dependencies between packages and produce a compilation command where cma or cmxa are correctly sorted. Indeed, if I use the -verbose option, I can see that cma are wrongly sorted in the former case, while they are fine in the latter.

Admitedly my description is rather abstract, but does anyone see what could I (or oasis) have forgotten, to tell ocamlfind that B.cma depends on A.cma?

Cheers,
  Philippe.