对于生态系统的新手尚不清楚,在构造和管理中小型OCaml项目的构建和管理方面,经典的首选方法是什么。我了解ocamlc
和[c]的基础知识,它们足以仿效常规UNIX C编译器,看起来似乎很简单。但是,在单个文件的一次性编译级别之上,尚不清楚如何最好地简单,干净地管理编译。问题不是在寻找潜在的工具,而是看到一种或几种正确(足够)的方式(已得到社区的经验验证)来构造和构建标准OCaml项目。
我的模型用例是一个普通但非平凡的项目,纯OCaml或OCaml加上C依赖项。这样的项目:
几个替代工具脱颖而出:
(我还看到了OMake,它似乎是一个自定义样式的[make++
],其中还包括一套针对通用语言(包括OCaml和ocaml-makenéeOCamlMakefile的标准规则),提供了GNU make
的标准规则。)
其中有没有一种首选的,现代的OCaml版本管理方法?
如何最好地构造项目文件?
如何包含和管理第三方库依赖关系?是将它们安装在系统级别还是首选的,或者是否有一种标准且直接的方式将它们本地管理到项目中?我更喜欢这样一种模型,在该模型中,项目应保持尽可能独立。
对于生态系统的新手尚不清楚,在构造和管理中小型OCaml项目的构建和管理方面,经典的首选方法是什么。我了解ocamlc的基础,&c .--...
我个人为ocamlbuild会给+1。它的默认规则足以用一个命令来编译中小型项目,而没有一个就可以进行非常小的配置。它还强制执行一些非常合理的约定(不要将源代码与构建结果混合在一起)。对于大型项目,可以使用额外的规则和插件对其进行自定义。在我工作的公司中,我们将其用于large project(Ocaml +一些C +一些预处理+ ...),它的工作原理很吸引人(比Makefiles麻烦得多)。
+ 1为OMake。
好问题。我倾向于说:
当前建议使用Dune