pbp*_*pbp 4 ocaml makefile ocamlbuild
我正在尝试使用ocamlbuild而不是make,但我无法正确链接我的目标文件与外部.cma库.似乎ocamlbuild首先尝试确定依赖关系然后忽略标记-L/path/to/lib.cma.随着make我只是路过所有必需的目录与-I和-L标志来ocamlc,但这些似乎并没有一起工作ocamlbuild- ocamlc不断失败,因为它无法找到必要的库.
您至少有两种方法可以将参数传递给ocamlbuild,以便将您的库存入帐户:
您可以使用ocamlbuild的命令行参数:
$ ocamlbuild -cflags '-I /path/to/mylibrary' -lflags '-I /path/to/mylibrary mylibrary.cma' myprogram.byte
Run Code Online (Sandbox Code Playgroud)
更换.cma用.cmxa的可执行文件了.
使用myocamlbuild.ml文件让ocamlbuild"知道"该库,并在_tag文件中标记需要它的文件:
在myocamlbuild.ml:
open Ocamlbuild_plugin
open Command
dispatch begin function
| After_rules ->
ocaml_lib ~extern:true ~dir:"/path/to/mylibrary" "mylibrary"
| _ -> ()
Run Code Online (Sandbox Code Playgroud)
在_tags:
<glob pattern>: use_mylibrary
Run Code Online (Sandbox Code Playgroud)
将ocaml_lib在指令myocamlbuild.ml告诉库名为"在MyLibrary"工具(与具体实现在结束.cma或.cmxa或其他-剖析,插件)位于目录"/路径/到/在MyLibrary".
glob pattern项目目录中对应的所有文件都将与"mylibrary"的使用相关联ocamlbuild,并使用ad hoc参数进行编译(因此您无需担心本机或字节目标).例如:
<src/somefile.ml>: use_mylibrary
Run Code Online (Sandbox Code Playgroud)注意:如果库位于编译器已知的路径中(通常/usr/lib/ocaml或/usr/local/lib/ocaml),则路径前缀可以安全地替换为+符号,因此/usr/lib/ocaml/mylibrary变为+mylibrary.
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |