Version française
Home     About     Download     Resources     Contact us    
Browse thread
How to define submodules
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Nicolas Pouillard <nicolas.pouillard@g...>
Subject: Re: [Caml-list] How to define submodules
On 7/21/06, Jozef Kosoru <zyzstar@uid0.sk> wrote:
> On Fri, Jul 21, 2006 at 14:01:26 +0200, Jean-Christophe Filliatre wrote:
> > Jozef Kosoru writes:
> > > OK, and then I want to compile it (within a root directory):
> > >
> > >     $ ocamlc -c Kernel/Parser/pdf.ml
> > >     $ ocamlc -I . Kernel/Parser/pdf.cmo main.ml -o app
> > >
> > >     File "main.ml", line 1, characters 0-22:
> > >     Unbound value Kernel.Parser.Pdf.init
> > >
> > > Is this supposed to work somehow?
> >
> > No.
> >
> > First, to compile  main.ml you need to pass  "-I Kernel/Parser" to the
> > compiler, because it needs to find the file pdf.cmi.
> >
> > Second,  in   main.ml  you  have   to  write  "Pdf.init"   instead  of
> > "Kernel.Parser.Pdf.init" because the directory structure is not turned
> > into a module structure in ocaml.
>
> Yes, that was my second example. That's not exactly what I want.
>
> > However, you can use the option -pack and -for-pack of the compiler to
> > pack several  files as submodules of  a new module; see  the manual at
> > http://caml.inria.fr/pub/docs/manual-ocaml/manual025.html
>
> Thank you!
> For the above example it's:
>
>   $ ocamlc -for-pack Kernel.Parser -c Kernel/Parser/pdf.ml
>   $ ocamlc -pack -o Parser.cmo -for-pack Kernel Kernel/Parser/pdf.cmo
>   $ ocamlc -pack -o Kernel.cmo Parser.cmo
>   $ ocamlc Kernel.cmo main.ml -o ap
>
> Now the last thing is how to convince my OMakefile to do it
> automatically.
>

You can try YaM (http://perso.ens-lyon.fr/damien.pous/shared/ocaml/YaM/)

It handles directories and subdirectories very well using -pack options.

-- 
Nicolas Pouillard