_tags文件与OCaml的目的是什么,以及如何解释内容?

pro*_*eek 5 ocaml ocamlbuild

构建使用列表理解帖子的OCaml代码,我可以使用较少的构建选项_tags来执行文件ocamlbuild.

$ cat _tags
<**/*> : package(camlp4),syntax(camlp4o),package(pa_comprehension)
Run Code Online (Sandbox Code Playgroud)

电池介绍,我还需要有_tags文件来使用电池包.

<*>: package(batteries)
Run Code Online (Sandbox Code Playgroud)

为什么第一个示例<**/*>在第二个示例使用时使用<*>?一般来说,ocamlbuild中_tags文件的目的是什么?你有一些很好的教程吗?

ivg*_*ivg 6

_tags除了myocamlbuild.ml形成ocamlbuild编译系统的根之外的文件.

ocamlbuild是一个非常通用的工具,可以编译任何东西.它由解算器驱动,根据目标,由用户设置,找到可以满足目标的解决方案.解决方案是应用于文件的一系列规则.文件可以用标签标记.标签可以改变规则.例如,它可以添加标志,例如启用分析或链接到库.

一个_tags文件提供了一种机制,以标签分配给文件,它有一个简单的语法:

 pattern ":" tag "," {tag}.
Run Code Online (Sandbox Code Playgroud)

左边的:内容实际上是模式或正则表达式.将为表达式匹配的每个文件分配右侧出现的所有标记:.

<**/*>意味着在此文件夹中的所有文件和子文件夹,没有此快捷方式:true.<*>表示此文件夹上的所有文件(不会降级到子文件夹).其他示例是<*.ml>,<*.cmx><**/*.cma>(顺便or也可以用于构建模式).

OCamlbuild记录在OCaml手册中,还有一个旧维基的转储,包含大量信息.

但有趣的是,通常你不需要知道这一点就可以使用OCaml.有一个OASIS工具可以自动执行所有任务,并_tags通过简单的高级定义为您创建文件.