Makefile 在ocamlbuild中使用外部库
我试图使用Makefile 在ocamlbuild中使用外部库,makefile,ocaml,ocamlbuild,Makefile,Ocaml,Ocamlbuild,我试图使用ocamlbuild而不是make,但无法将我的对象文件与外部.cma库正确链接。似乎ocamlbuild首先尝试确定依赖项,然后忽略像-L/path/to/lib.cma这样的标志。使用make时,我只是将带有-I和-L标志的所有必要目录传递给ocamlc,但是这些似乎不适用于ocamlbuild,ocamlc不断失败,因为它找不到必要的库。您至少有两种方法将参数传递给ocamlbuild,以便它考虑到您的库: 您可以使用ocamlbuild的命令行参数: $ ocamlbuild
ocamlbuild
而不是make
,但无法将我的对象文件与外部.cma
库正确链接。似乎ocamlbuild
首先尝试确定依赖项,然后忽略像-L/path/to/lib.cma这样的标志。使用make
时,我只是将带有-I
和-L
标志的所有必要目录传递给ocamlc
,但是这些似乎不适用于ocamlbuild
,
ocamlc不断失败,因为它找不到必要的库。您至少有两种方法将参数传递给ocamlbuild,以便它考虑到您的库:
$ ocamlbuild -cflags '-I /path/to/mylibrary' -lflags '-I /path/to/mylibrary mylibrary.cma' myprogram.byte
将本机可执行文件的.cma
替换为.cmxa
build.ml
中:
open Ocamlbuild_plugin
open Command
dispatch begin function
| After_rules ->
ocaml_lib ~extern:true ~dir:"/path/to/mylibrary" "mylibrary"
| _ -> ()
在\u标签中
:
<glob pattern>: use_mylibrary
/usr/lib/ocaml
或/usr/local/lib/ocaml
),则路径前缀可以安全地替换为+
符号,因此/usr/lib/ocaml/mylibrary
变为+mylibrary
<src/somefile.ml>: use_mylibrary