I'm using Ocamlbuild to manage the compilation of a library. The
myocamlbuild.ml plugin I'm using is a slight variation of the one found on
the Wiki and that adds support for Findlib [1]. Even though the actual code
compilation is working fine, I'm having problems getting it to correctly
invoke Ocamldoc to produce the API docs.
On the project's root directory I have the plugin and a '_tags' file that
simply says that the 'lambdoc' (contains code) and 'apidoc-src' (contains
txt files with intro and tutorials for API doc) directories should be included:
<lambdoc>: include
<apidoc-src>: include
Also on the root directory I have a 'lambdoc.mlpack' file containing all the
modules that should be packed together (the modules themselves are inside the
'lambdoc' directory), and a 'lambdoc.mllib' file with a single line 'Lambdoc'
that signals that the pack should be made into a library. In addition, I
modified the plugin so that an invocation of ocamldoc would add the '-intro'
option to Ocamldoc:
let ocamldoc_opts = S [A"-intro"; A"intro.txt"]
And flagged it accordingly in the After_rules:
flag ["ocaml"; "doc"] ocamldoc_opts;
Unfortunately this isn't working. When I invoke 'ocamlbuild
lambdoc.docdir/index.html', Ocamldoc always complains it can't find the
intro.txt file. Moreover, if I forgo the intro modifications to the plugin,
even though the ocamldoc invocation succeeds, the lambdoc.docdir directory
contains only skeleton Ocamldoc files, ie, no actual generated API.
So my questions are on how to get Ocamlbuild to generate the API documentation
in this context, and on how can external txt files also be included.
I only read your problem very quickly as I'm kind of busy, so please
excuse me if I say something very stupid ;)
So, ocamldoc doesn't find "intro.txt". This is because this file is not
copied into the _build directory by ocamlbuild. You need to explain to
ocamlbuild, in your plugin, that your target (lambdoc.docdir/index.html)
depends on "intro.txt", otherwise ocamlbuild won't copy the file. Even
if you copy the file yourself into the _build directory, ocamlbuild
might delete it.
If I remember correctly there is a function of the plugin API, called
"dep" if I'm not mistaken, which does exactly this.
I can develop this in more details tomorrow if you need.
--
Romain Bardou
_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs