需要jbuilder包中的最低OCaml版本
在定义jbuild规范时,如何要求特定的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_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_环境
,这只是一个函数具有@自
标记的随机示例)