Tag: ocamlbuild

什么是结构和build立OCaml项目的首选方法?

对于这个生态系统的新手来说,build立和pipe理build设中小型OCaml项目的正式的首选方法是不清楚的。 我理解了ocamlc的基础知识,它们反映了传统的UNIX C编译器,看起来很简单。 但是,在单个文件一次编译的水平之上,不清楚如何更好地pipe理编译的简单和干净。 这个问题并不是寻找潜在的工具,而是通过构build和build立标准的OCaml项目来看到一个或几个正确的(足够的)方法 – 经过社区的validation。 我的模型用例是一个纯粹的OCaml或OCaml以及一个C依赖项的一个适度但不重要的项目。 这样一个项目: 包含一些源文件 链接到一些标准库 链接到一个或多个第三方库 可以select包含一个C库和OCaml包装作为子项目(虽然这也可以单独pipe理,并作为第三方库包含,如(3)) 几个替代工具脱颖而出: 自定义Makefiles似乎是大多数开源OCaml软件包的通用标准,但看起来令人沮丧和复杂 – 甚至比适度的C / C ++项目更为复杂。 更糟糕的是,很多甚至看起来很简单的OCaml库在autoconf / automake层上面更复杂。 ocamlbuild似乎提供了一个现代的,简化的机制,用最less的configuration自动化构build,但是它并没有很好的logging给新手,也没有在OCaml生态系统的介绍性材料中用实例来表示,也没有被任何已发布的OCaml项目我浏览过灵感。 OASIS似乎是其他构build系统上的一个约定和库代码层,以支持构build一个包pipe理器和库,如Cabal。 (我也看到了OMake ,它似乎是一个自制的“ make++ ”,它也包括一套通用语言的标准规则,包括OCaml和ocaml- makenéeOCamlMakefile,为GNU make提供了一个标准规则模板。 ) 这些都是pipe理OCaml的首选,现代化的方式吗? 项目文件的结构如何? 如何包含和pipe理第三方库依赖项? 是在系统级别安装它们还是在本地pipe理项目的标准和直接方式? 我更喜欢一个模型,在这个模型中尽可能保持项目独立。