Your present directory structure is just fine. A single `dune` file at `src/dune` with the contents
(executable
(name compile)
(public_name translate))
should be enough. Here I am assuming that all modules in `src/` are part of the compiler. If this is not the case you need to specify the modules you want to include as follows:
(executable
(name compile)
(public_name translate)
(modules compile ast symbol ...))
Note: if you have a file `parser.mly` in your project that needs to be processed with `ocamlyacc` then you need to declare this in its own stanza:
(ocamlyacc parser)
Similarly an `ocamllex` file `lexer.mll` needs to be declared with
(ocamllex lexer)
Finally, you need to make sure there is a `<foo>.opam` file at the root of your project. This file can be be empty if you do not actually use `opam` but the name `foo` is used by `dune` to identify the "package" your executable belongs to. Once these files
are in place, you can build your project with
dune build
Best wishes,
Nicolás
Greetings. I have a toy compiler made up of ~20 modules:
and a top-level in
compile.ml. These sources are compiled and linked using a Makefile which invokes ocamlc. I'll call the resulting compiler "translate".
At present I have *all* of these files resident in a single src/ directory. I'm considering converting the build to dune for the semester. What would the recommended directory structure be and what would the dune file(s?) and stanzas look like? I assume
this is in the middle of dune's wheelhouse but I wasn't able to find anything on it in the examples or documents. I assume/hope I don't have to put the modules in a library.
Thank you,
Bob Muller