Building an Ad Hoc .cmxs¶
In the model exposed by Dune, a .cmxs target is created for each
library. However, the .cmxs format itself is more flexible and is
capable to containing arbitrary .cmxa and .cmx files.
For the specific cases where this extra flexibility is needed, one can use
Variables for Artifacts to write explicit rules to build .cmxs files
not associated to any library.
Below is an example where we build my.cmxs containing foo.cmxa and
d.cmx. Note how we use a library stanza to set
up the compilation of d.cmx.
(library
(name foo)
(modules a b c))
(library
(name dummy)
(modules d))
(rule
(targets my.cmxs)
(action (run %{ocamlopt} -shared -o %{targets} %{cmxa:foo} %{cmx:d})))