尝试使用该实用程序创建.cma
文件(库)时遇到一些问题。dune
我有以下项目树:
.
├── _build
│ ├── default
│ │ ├── dune
│ │ └── lib
│ │ ├── a.a
│ │ ├── a.cma
│ │ ├── a.cmxa
│ │ ├── a.cmxs
│ │ ├── a.ml
│ │ └── dune
│ └── log
├── dune
├── dune-project
└── lib
├── a.ml
└── dune
wherea.ml
声明了一个非常简单的函数f
,例如。当我直接运行ocamlc -o a.cma -a a.ml
,然后启动时utop a.cma
,我可以根据需要执行以下命令:
utop # A.f;;
- : int -> int = <fun>
另一方面,在使用一次dune build
(生成_build
目录及其子目录)之后,_build/default/lib/a.cma
我得到的文件占用的空间是手动生成的文件的十倍,更重要的是,它不起作用。两个命令都不成功utop _build/default/lib/a.cma
,cd _build/default/lib; utop a.cma
我无法使用该模块A
:
utop # A.f;;
Line 1, characters 0-3:
Error: Unbound module A
我知道这个dune utop
命令,但是如果我想在其他地方导出/共享我的库,dune
没有安装在哪里?我应该做些什么?我使用dune
错误的方式吗?先感谢您
PS:文件内容:
库/沙丘
(library
(name a))