5

Building OCaml code that uses list comprehension post 开始,我可以使用_tags文件来执行ocamlbuild更少的构建选项。

$ cat _tags
<**/*> : package(camlp4),syntax(camlp4o),package(pa_comprehension)

电池介绍中,我还需要有 _tags 文件才能使用电池包。

<*>: package(batteries)

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

4

1 回答 1

6

一个_tags文件除了myocamlbuild.ml构成ocamlbuild编译系统的根。

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

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

 pattern ":" tag "," {tag}.

左边的:实际上是一个模式或正则表达式。与表达式匹配的每个文件都将分配有出现在 . 右侧的所有标签:

<**/*>表示对于此文件夹中的所有文件以及所有子文件夹,都有一个快捷方式:true. <*>表示此文件夹上的所有文件(不下降到子文件夹)。其他示例是<*.ml>,<*.cmx><**/*.cma>(顺便说一句or,也可用于构建模式)。

OCamlbuild 记录在OCaml Manual中,还有一个旧 wiki 的转储,包含大量信息。

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

于 2015-02-27T04:15:59.600 回答