【问题标题】:Why are some standard ocaml libraries opam packages and some are not?为什么有些标准的 ocaml 库是 opam 包而有些不是?
【发布时间】:2014-06-05 07:10:57
【问题描述】:

我在 OCaml opam repository 中看到了 base-unix 包。它被描述为“随 OCaml 编译器分发的 Unix 库”。也与 OCaml 编译器一起分发的其他一些库没有自己的包。例如,str 库没有 base-str 包这样的东西。

为什么会有这样的差异?据我所知,在使用ocamlfindocamlbuild 编译时,它们都需要在命令行上指定为包或库。

【问题讨论】:

    标签: ocaml opam ocamlfind


    【解决方案1】:

    带有 OPAM 包名称 base-XXX 的库是可选库:它们来自 OCaml 编译器本身,但根据计算机环境、操作系统和编译器的构建配置标志,它们可能安装也可能不安装。例如,base-unix 的存在意味着 unix 库在该环境中可用。

    另一方面,str 库不依赖于系统,因此可以在任何安装 OCaml 的地方使用。因此 OPAM 不需要显式提供其基础包来告知库的存在。

    虽然所有 OCaml 安装都存在 str,但它的链接不是自动的。这就是 ocamlfind 需要一个包的原因。

    OPAM 软件包用于通过 opam 命令安装。 OCamlFind 包用于链接。它们相关但不同。令人困惑,但这就是我们目前在 OCaml 生态系统中所拥有的。

    【讨论】:

    • 确实令人困惑,请修复:-)
    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 2019-02-21
    • 2010-12-15
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多