需要jbuilder包中的最低OCaml版本

需要jbuilder包中的最低OCaml版本,ocaml,Ocaml,在定义jbuild规范时,如何要求特定的OCaml版本 例如,假设我有以下文件: (jbuild_version 1) (library ((name myjson) (public_name myjson) (synopsis "My version of json") (libraries (yojson)))) 但是我想使用Unix.unsafe_environment,这在OCaml

在定义jbuild规范时,如何要求特定的OCaml版本

例如,假设我有以下文件:

(jbuild_version 1)

(library
 ((name myjson)
  (public_name myjson)
  (synopsis "My version of json")
  (libraries (yojson))))
但是我想使用
Unix.unsafe_environment
,这在OCaml<4.06上是不可用的。如何将此约束添加到包中,以便尝试使用较旧的OCaml编译它的人将收到一条很好的错误消息(而不是更神秘的
错误:Unbound value Unix.unsafe_environment


确实提到存在变量
ocaml\u version
,但我找不到一个简单的例子来说明如何使用它。

您可以通过将该变量添加到
myjson.opam
中,在opam级别解决这个问题(这样这个包就无法安装):

available: [ ocaml-version >= "4.06.0" ]

(您确定
Unix.environment
不适合您吗?
unsafe\u environment
附带了一些安全使用的特殊预防措施)

当ocaml版本与库不兼容时,当前没有内置方法使jbuilder打印温和的消息


您应该能够在规则节中使用
ocaml\u version
,该规则节生成空的
.ml
,但在版本错误时失败。但最好是要求提供此功能。

我实际需要的是防止
jbuilder build
命令(当尝试在本地编译它时,还没有使用OPAM)尝试编译该文件,然后失败,并显示神秘的错误消息。所以OPAM步骤有点太远了。(关于
unsafe_环境
,这只是一个函数具有
@自
标记的随机示例)