与 OCaml 一起发布的某些模块喜欢Unix
并Bigarray
有自己的.cmx
和.cmxa
文件ocamlopt -where
(~/.opam/4.03.0/lib/ocaml
在我当前的 opam 开关中的系统上)。
有没有办法在不编译的情况下确定哪些源文件取决于标准发行版中的哪些“特殊”库?我打算稍后在 Makefile 中使用此输出。
以下程序example.ml
open Unix;;
Unix.system "echo hi";;
可以使用编译ocamlfind ocamlopt -package unix -linkpkg example.ml
。我不确定如何在不通过ocamlfind
包装器的情况下编译它。
我想知道是否有一种方法可以静态检测 unbound-in-this-file 模块Unix
对应于标准发行版中的“某物”并报告unix.cmxa
为依赖项。ocamldep
默认情况下似乎没有将其报告为依赖项。
ocamldep -all example.ml
只是报告可以使用生成的各种对象和接口文件example.ml
依赖于example.ml
. 我希望得到一条错误消息,抱怨 ocamldep 不理解该Unix
模块,或者有一些迹象表明它是构建对象所必需的。
$ ocamldep -all example.ml
example.cmo example.cmi : example.ml
example.cmx example.o example.cmi : example.ml