使用 ocaml dune 构建 "hello world"

Building "hello world" with ocaml dune

按照 https://dune.readthedocs.io/en/stable/quick-start.html 上的教程,我创建了一个包含

的文件 hello_world.ml
print_endline "Hello, world!"

和一个包含

的文件dune
(executable
 (name hello_world))

然后输入

dune build hello_world.exe

但它抱怨其他(完全不相关的)文件中的错误。

沙丘是否有可能查看其他文件,即使它们没有在 dune 文件中提及(甚至递归地)?以及如何预防?

是的,dune 将搜索当前文件夹中所有包含 *.ml 或 *.re 文件的文件。要禁用此行为,请使用 modules 节并明确指定哪些模块包含您的可执行文件。例如,如果它由 hello_world.mlutilities.ml 编译单元组成,那么下面的规范将适用于您,

(executable 
  (name hello_world)
  (modules hello_world utilities))