Excerpts from Romain Bardou's message of Thu Jan 31 12:55:20 +0100 2008: > Hello, Hello, > I have this big project I work on, which could be summarized like this: > > module A > module bla/A > module bla/B > module Main > > The module B in the bla directory depends on the module A of the bla > directory. The module Main depends on both modules A and on module B. > For some reasons I cannot rename either of the modules. > > So what I do is pack A and B in a Bla module, so I can write Bla.A and > Bla.B, using the -pack command line option. It works with my Makefile. > > Now I try to use ocamlbuild, because I really like its approach (I come > from the Pascal world where no makefile is needed). So I made this file > bla.mlpack containing the lines: > > A > B bla.mlpack should not be in the bla/ directory, and should contain: bla/A bla/B Because you don't want to expose bla to all your modules since you have a name clash. > Now if I compile using: > > ocamlbuild Main.byte Does it works now? [...] > I can't compile using: > > ocamlbuild -I bla Main.byte > > Because now the module A is defined twice. Yes > So I tried to compile using two steps: first, compile bla.cmo, and then, > compile Main.byte, but ocamlbuild doesn't seem to be good at that (and > actually that's not a bad thing imo). Indeed, if I do: > > ocamlbuild bla.cmo You won't trick ocamlbuild with this technique, but it's a good way to specifically found what's should be buildable and is not. [...] > Now for the questions: > 1) What is the best way to compile my project? By "best" I mean: with no > plugin if possible, with a small _tags file, and as few command line > options as possible, while still keeping the spirit of ocamlbuild (for > instance, compiling everything in one single call to ocamlbuild if > possible). In most of cases it will works. However precise directory scopes and packages contents and scope can be done in a plugin. > 2) Why doesn't ocamlbuild compile my file bla.mlpack into bla.cmo? In > the manual I can read that "%.mlpack" has target "%.cmo". Yes there is such a rule. > 3) If ocamlbuild actually did compile bla.cmo, could it use it to > compile main.byte or must I build a library bla.cma first? Yes it will use it. > Thanks. I would be glad to contribute to the wiki, but I have to > understand ocamlbuild first ;) I would be thankful. -- Nicolas Pouillard aka Ertai