0

我是 OCaml 的新手,我按照教程设置了开发环境。然后我用 dune 和 OCaml尝试了helloworld示例,但遇到了以下错误:

$ dune init exe helloworld
Success: initialized executable component named helloworld
$ dune build
Error: I cannot find the root of the current workspace/project.
If you would like to create a new dune project, you can type:

    dune init project NAME

Otherwise, please make sure to run dune inside an existing project or
workspace. For more information about how dune identifies the root of the
current workspace/project, please refer to
https://dune.readthedocs.io/en/stable/usage.html#finding-the-root

目录结构:

.
├── _build
│   └── log
├── dune
└── helloworld.ml

沙丘:3.0.2
ocaml:4.11.1

4

1 回答 1

6

dune-project您可以通过在项目的根目录中添加一个填充此行的文件来解决这种情况:

(lang dune 3.0)

但是,根据文档,dune init exec它不用于创建项目:它仅为现有项目中的可执行组件创建样板(有关详细信息,请参阅dune init --helpdune cli 手册)。

要初始化项目,您应该运行

dune init proj helloworld

这还将生成一个模板dune-project文件以及推荐的项目文件结构。


注意:如果文件不存在,dune 3.0 之前dune build会为您创建文件:

❯ dune init exe helloworld
Success: initialized executable component named helloworld
❯ ls
_build  dune  helloworld.ml
❯ dune build
Info: Creating file dune-project with this contents:
| (lang dune 2.9)
❯ ls
_build  dune  dune-project  helloworld.ml

但是,由于dune 3.0,dune-project在项目中找不到时不会自动添加。

于 2022-02-21T08:00:35.630 回答