我接手了一个由主程序和库组成的ocaml项目,但库是独立构建的。到目前为止,使用“ocamlopt -I mylib.cmxa myprogram.ml”链接主程序是可能的——但是我在使用带有 ocamlopt 的 opam 库时遇到了问题,所以我决定改用“dune”。
我的问题是:如何使用 dune 与 ocaml 库链接,以便结果与上面的 ocamlopt 行相同?
我接手了一个由主程序和库组成的ocaml项目,但库是独立构建的。到目前为止,使用“ocamlopt -I mylib.cmxa myprogram.ml”链接主程序是可能的——但是我在使用带有 ocamlopt 的 opam 库时遇到了问题,所以我决定改用“dune”。
我的问题是:如何使用 dune 与 ocaml 库链接,以便结果与上面的 ocamlopt 行相同?
这将有助于查看您的项目的结构。但是,一般来说,如果您的项目结构如下:
root/
|—— dune-project
|—— lib/
| |—— dune
| |—— lib.ml
|
|—— bin/
| |—— dune
| |—— bin.ml
然后你的lib/dune
会看起来像
(library
(name mylib)
(public_name mylib)
(libraries core async))
你bin/dune
会简单地在它的依赖项中列出这个库
(executable
(name mybin)
(libraries mylib))
如需进一步指导,请参阅存储库中的hello_world
示例项目。dune