生态系统新手尚不清楚建立和管理建筑中小型OCaml项目的正规首选方式。我理解ocamlc
,& c的基础知识 - 它们反映了传统的UNIX C编译器,看起来很简单。但是,在单个文件的一次编译级别之上,不清楚如何最好地简单干净地管理编译。这个问题并不是在寻找潜在的工具,而是通过构建和建立标准的OCaml项目来看到一种或几种正确的(足够的)方法 - 正如社区的经验所证实的那样。构建和构建OCaml项目的首选方式是什么?
我的模型用例是一个适度但不重要的项目,纯OCaml或OCaml加上C依赖项。这样的项目:
- 包含了一些源文件
- 链接到一些标准库的
- 链接到一个或多个第三方库
- 任选地包括C库和OCaml的包装为的子项目(虽然这也可以单独管理,并将其作为一个第三方库,如(3))
若干备选工具中脱颖而出:
- 自定义Makefiles似乎是大多数开源OCaml软件包中的通用标准,但看起来令人沮丧和复杂 - 甚至比适度的C/C++项目更加如此。更糟糕的是,许多看起来很简单的OCaml库在autoconf/automake层上面更加复杂。
- ocamlbuild似乎提供了一个现代的,简化的机制,以最少的配置进行自动化构建,但对于新手来说并没有很好的文档记录,也没有在OCaml生态系统的介绍性材料中用实例代表,也没有被任何已发布的OCaml项目,我曾浏览过灵感。
- OASIS似乎是其他构建系统顶层的约定和库代码层,以支持构建包管理器和库,如Cabal。
(I也看到OMake,这似乎是一个自封“make++
”,这也包括一套共同语言,包括OCaml的标准规则,以及ocaml-make娘家姓OCamlMakefile,提供的标准规则的模板对于GNU make
。)
这些是管理OCaml构建的首选的现代方式吗?
项目文件的结构如何?
如何包含和管理第三方库依赖项?是否希望在系统级别安装它们,或者是否存在以本地方式管理项目的标准和直接方式?我更喜欢一个模型,尽可能保持项目的独立性。
的ocamlbuild链接(现在)打破了。 –
链接现已修复 – ygrek