[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2007-03-13 (18:38) |
From: | Aleksey Nogin <nogin@m...> |
Subject: | Re: [Caml-list] ocamlbuild is VERY nifty |
On 07.03.2007 07:53, Joel Reymont wrote: > I asked around before settling on a build system since I'm new to OCaml. > I looked at OMake, OCamlMakefile and found them complex and confusing. Well, it should have been equally easy to use OMake in this case - while it is true that OMake is complex, the complexity is only there to help you out when you need it; you can safely ignore it until then. If I understand what you are doing here correctly, it would have been sufficient to just use the following OMakefile: --------- # Optional - use bytecode compilation even when ocamlopt is available NATIVE_ENABLED = false BYTE_ENABLED = true USE_OCAMLFIND = true OCAMLPACKS[] = ounit .DEFAULT: $(OCamlProgram test, test easy easy_lexer easy_parser parser_util symtab parser_test) ------- and then simply running "omake" would do what you want. > Then William Neuman pointed me to ocamlbuild and Nicolas Pouillard > helped me hook it up to external libraries via a plugin. > > Deep into my first project I confirm that ocamlbuild is VERY nifty. I > can automatically rebuild when any parts of my project change and then > run my unit tests. > > All I need to do is: > > ocamlbuild test.byte -- > > *** my project *** > > 189 easy.mli > 282 easy_lexer.mll > 420 easy_parser.mly > 17 myocamlbuild.ml > 14 parser_util.ml > 30 symtab.ml > 8 test.ml > 284 parser_test.ml > 1355 total > > *** test.ml *** > > open OUnit > > let suite = "Morpher" >::: > [Parser_test.suite] > > let _ = > run_test_tt_main suite > > *** myocamlbuild.ml *** > > open Ocamlbuild_plugin;; > open Command;; > > let packages = "ounit" (* "pkg1,pkg2,..." *);; > > let ocamlfind cmd = > S[A"ocamlfind"; A cmd; A"-package"; A packages];; > > flag ["ocaml"; "link"] (A"-linkpkg");; > > dispatch begin function > | After_options -> > Options.ocamlc := ocamlfind "ocamlc"; > Options.ocamlopt := ocamlfind "ocamlopt"; > | _ -> () > end > > -- > http://wagerlabs.com/ > > > > > > _______________________________________________ > 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 >