Version franÁaise
Home ††† About ††† Download ††† Resources ††† Contact us †††
Browse thread
OCamlBuild question
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: David Teller <David.Teller@u...>
Subject: Re: OCamlBuild question
Merci, avec ces explications, je suis enfin arrivé à faire fonctionner
[build]. Maintenant, reste un problème que je n'arrive pas à
comprendre : mon fichier dispara√ģt. Pour √™tre plus pr√©cis, j'√©cris le
contenu de mon .mli dans un fichier que j'ai créé pour l'occasion, à
l'intérieur de _build -- mais pour des raisons qui m'échappent,
ocamlbuild trouve moyen de l'effacer avant la fin de la compilation.

J'ai vérifié, une fois que j'ai écrit mon fichier, il existe bien. J'ai
aussi vérifié, si je place mon fichier dans /tmp au lieu de _build, ça
marche.   J'ai aussi vérifié, si je remplace l'extension de mon .mli
par .mlpack.mli, ça ne change rien. J'ai essayé de l'ouvrir avec
[open_out] et avec [with_output_file], avec la même absence de
résultats.

Ah, et pour compliquer les choses, ça ne marche pas quand j'appelle
ocamlbuild une seule fois. Mais il arrive que, si j'invoque ocamlbuild
deux fois de suite, ça se mette à marcher.

C'est assez frustrant. Des idées ?

Merci,
 David


On Tue, 2008-09-30 at 12:40 +0200, Nicolas Pouillard wrote: 
> If you need (depend) on files that you statically know then the ~deps argument
> is fine (~deps:["%.mli.depends"; "%.mli"]). If you need files that you only
> know dynamically then the 'build' argument function is for that purpose.
>
> > As for part 1, it requires the ability to find which source .ml / .mli
> > correspond to a given module. I can only assume OCamlBuild offers some
> > kind of API for this purpose, because I'd rather avoid folding through
> > the whole tree, resolving [include] directives myself to find a .ml or
> > a .mli which may be the right file.
> 
> Yes the function is called expand_module it takes 3 arguments, the include
> directories, the module name, the extensions.
> 
>    Example: let include_dirs = Pathname.include_dirs_of (Pathname.dirname mlpack)
>             in build (expand_module include_dirs module_name ["mli"; "mli.depends"])
> 
> Have a look to the ocamlbuild/ocaml_tools.ml file for a similar function
> (import_mlypack).
> 
-- 
David Teller-Rajchenbach
 Security of Distributed Systems
  http://www.univ-orleans.fr/lifo/Members/David.Teller
 Angry researcher: French Universities need reforms, but the LRU act brings liquidations.