使用沙丘将生成的可执行文件复制到我的根目录中

Copy the produced executable in my root dir with dune

假设我有一个具有以下结构的简单项目:

.
├── dune-project
└── src
└── bin
    ├── dune
    └── main.ml

dune-project

(lang dune 2.7)
(name myproject)

(package
 (name myproject)
 (synopsis "myproject")
 (description "Basic project")
)

dune

(executable
 (name main)
 (public_name myproject)
)

使用 dune build 编译时,我有一个新目录 _build,其结构如下:

_build
├── default
│   ├── dune-project
│   ├── META.myproject
│   ├── myproject.dune-package
│   ├── myproject.install
│   └── src
│       └── bin
│           ├── dune
│           ├── main.exe
│           └── main.ml
├── install
│   └── default
│       ├── bin
│       │   └── myproject -> ../../../default/src/bin/main.exe
│       └── lib
│           └── myproject
│               ├── dune-package -> ../../../../default/myproject.dune-package
│               └── META -> ../../../../default/META.myproject
└── log

所以 dune 能够创建从 main.exemyproject 的符号链接,但我实际上希望 myproject 位于 . 而不是 _build/install/default/bin

我尝试了三件事:

老实说,我不知道我还能做什么。我阅读了手册,但找不到解决方案。我不介意我是否可以只输入 dune run 但由于 dune 允许构建多个可执行文件,我知道这不是一个选项。我希望能够写 dune run myproject 因为我正在使用我的可执行文件的 public 名称但是沙丘找不到它。所以我只想在我的根目录中有 myproject 这样我就可以输入 ./myproject 并且开心。

你知道dune exec吗?就是你说的dune run我相信

从项目的根目录,您可以执行 dune exec ./bin/main.exe