我使用ocaml和emacs tuareg模式,作为一个新用户,我真的不太了解所有的ocaml工具...
最近我用opam安装了ocaml-wlc,它是ocaml中的wayland库的绑定。我尝试在我的代码中使用open导入库,但它不起作用。
经过一些研究,我发现我需要使用ocamlfind,这是一个管理外部库的工具。我在网上没有找到关于这个工具的任何教程或文档,所以我阅读了手册。
在这之后,我仍然不知道如何使用图书馆…
我发现有很多用于ocaml的工具,但我还没有找到任何关于如何使用该生态系统的适当教程/文档。
标题询问了ocamlfind教程,但实际上我正在寻找一个关于ocaml工具生态系统以及如何管理简单任务(如使用opam安装和使用库)的合适教程。
谢谢
发布于 2015-12-19 20:39:15
它包含一个example目录,显示了如何使用它:
https://github.com/Armael/ocaml-wlc/tree/master/example
简而言之,假设您正在使用ocamlbuild,将true: package(wlc)放入您的_tags文件中。
发布于 2015-12-20 03:15:22
使用ocamlfind list获取所有已知ocamlfind包的列表,分别列出它们的内部名称。
如果你已经在你的顶层(ocaml)中激活了findlib,那么你会得到关于将包加载到顶层的提示:
str@s132-intel:~> ocaml
OCaml version 4.02.3
Findlib has been successfully loaded. Additional directives:
#require "package";; to load a package
#list;; to list the available packages
#camlp4o;; to load camlp4 (standard syntax)
#camlp4r;; to load camlp4 (revised syntax)
#predicates "p,q,...";; to set these predicates
Topfind.reset();; to force that packages will be reloaded
#thread;; to enable要使用顶层中的包,请使用由#list;;显示的名称使用#require "internalname";;,然后才能使用open。
附注:open Modulename的缺点是隐藏了函数的来源。
要编译您的代码,需要调用前缀为ocamlfind,see ocamlfind doc here的编译器,一般语法为:
# binary test1, use modules Unix and Str, link packages in
ocamlfind ocamlc -o test1 -packages unix,str -linkpkg test1.ml希望这篇文章能帮你入门。有关详细信息,请参阅ocaml.org。
耐心点,这不是一种主流语言,有大量的材料。但您可以直接在他们的邮件列表上与研究人员和开发人员交谈。
https://stackoverflow.com/questions/34370453
复制相似问题