2

我有一个沙丘项目文件,指定我的 ocaml 编译器应至少为 4.05.0

我创建了一个配置文件来检查我需要的所有内容是否已正确安装(使用Unix.open_process_in "which <executabe>"和的混合dune external-lib-deps --missing @@default),但对于 OCaml 版本,我必须编写:

let e = Sys.ocaml_version in
match String.split_on_char '.' e with
| major :: minor :: patchlevel :: _
  when int_of_string major >= 4
       && int_of_string minor >= 5
       && int_of_string patchlevel >= 0 ->
    printf "%s@," e
| _ -> printf "version < 4.05.0"

但我不太喜欢它,因为如果我需要更改版本要求,它不会传播到此检查,我必须手动更改它。

有没有办法像我检查所有需要的 OCaml 软件包都安装了一样dune external-lib-deps --missing @@default?(不一定只针对 OCaml 编译器,还针对每个绑定到某个版本的包?)

由于依赖项规范是一个逻辑表达式,我希望 opam 背后的求解器可以为我做这件事,因为我无法在我的配置文件中实现 SMT 求解器。

4

0 回答 0