# Build Systems for OCaml

**URL:** <https://discuss.ocaml.org/t/build-systems-for-ocaml/29>\
**Category:** Ecosystem\
**Tags:** jbuilder, build\
**Created:** [May 13, 2017, 12:02pm UTC](https://discuss.ocaml.org/t/build-systems-for-ocaml/29 "2017-05-13T12:02:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yaron\_Minsky](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/yaron_minsky/32/11_2.png) [@Yaron\_Minsky](https://discuss.ocaml.org/u/Yaron_Minsky)\
**Post date:** [May 13, 2017, 12:02pm UTC](https://discuss.ocaml.org/t/build-systems-for-ocaml/29/1 "2017-05-13T12:02:16Z")

</div>

For discussing how to build OCaml code, including OCaml-specific build systems (e.g., ocamlbuild, ocp-build, jbuilder, jenga) and for use of general purpose build systems.

---

<div class="post-metadata">

**Author:** ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)\
**Post date:** [May 13, 2017, 12:17pm UTC](https://discuss.ocaml.org/t/build-systems-for-ocaml/29/2 "2017-05-13T12:17:53Z")

</div>

I’ve recategorised this in the new build system category.

---

<div class="post-metadata">

**Author:** ![michipili](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/michipili/32/43_2.png) [@michipili](https://discuss.ocaml.org/u/michipili)\
**Post date:** [May 13, 2017, 7:01pm UTC](https://discuss.ocaml.org/t/build-systems-for-ocaml/29/3 "2017-05-13T19:01:31Z")

</div>

I continue to use makefiles for this. The reason is that it is easy to extend, since makefiles are just shell-scripts written from a special perspective. Macros I wrote and use are [described here](https://github.com/michipili/bsdowl/blob/master/doc/DevelopOCamlSoftware.md). There are a few rough edges, but I’ll fix them eventually.

---

<div class="post-metadata">

**Author:** ![rdavison](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/rdavison/32/4321_2.png) [@rdavison](https://discuss.ocaml.org/u/rdavison)\
**Post date:** [May 13, 2017, 9:02pm UTC](https://discuss.ocaml.org/t/build-systems-for-ocaml/29/4 "2017-05-13T21:02:29Z")

</div>

Not gonna lie, jbuilder, the new build system backed by Jane Street is pretty tight. It’s pretty easy to get setup, builds very fast, autogenerates merlin files, has support for multiple build contexts, and is under active development. Internally, I believe it defines a DSL which builds a dependency graph for all the targets and functionally composes actions using arrows to build each target.

I think it has a very promising future (no pun intended).

PS: I forgot to mention, it also builds your project in parallel.
