Am Dienstag, den 04.08.2015, 16:49 -0400 schrieb Ashish Agarwal: > With the file structure shown below, assume you're in directory libb. > Then: > > > $ ocamlc -I ../liba -c a.ml > (* no warnings *) > > > $ ocamlfind ocamlc -I ../liba -c a.ml > findlib: [WARNING] Interface a.cmi occurs in several > directories: ., ../liba > > > Why does findlib do an extra check that the compiler is okay with? > This is causing problems in a project where I'd like to build several > packed libraries, and one reason for doing so is precisely to reuse > module names. Am I going about this wrong? My goal is that within > libb, the only module from liba that should be visible is Liba. The compiler has always been okay with multiple cmis in different directories because the assumption is that you have full control over the directories, and that the search path resolves any conflicts. This is different when you use findlib. Typically you use libraries from third parties, and cmi conflicts would remain unnoticed if findlib didn't check. This feature, however, is older than packed modules, and findlib doesn't take packed modules into account. It is a little bit unclear to me how the check could be made better. Any ideas? Gerd > > > ├── liba > │ ├── a.cmi > │ ├── a.cmo > │ ├── a.ml > │ ├── b.cmi > │ ├── b.cmo > │ ├── b.ml > │ ├── liba.cma > │ ├── liba.cmi > │ └── liba.cmo > └── libb > ├── a.cmi > ├── a.cmo > └── a.ml > > > -- ------------------------------------------------------------ Gerd Stolpmann, Darmstadt, Germany gerd@gerd-stolpmann.de My OCaml site: http://www.camlcity.org Contact details: http://www.camlcity.org/contact.html Company homepage: http://www.gerd-stolpmann.de ------------------------------------------------------------