对于生态系统的新手来说,构建和管理构建中小型 OCaml 项目的规范首选方式是什么?我了解 ocamlc
的基础知识,&c--它们反射(reflect)了传统的 UNIX C 编译器,足以看起来简单明了。但是,在单个文件的一次性编译级别之上,尚不清楚如何最好地简单而干净地管理编译。问题不在于寻找潜在的工具,而在于找到一种或几种正确(足够)的方法——正如社区经验所验证的——用于构建和构建标准 OCaml 项目。
我的模型用例是一个普通但不平凡的项目,纯 OCaml 或 OCaml 加上 C 依赖项。这样的项目:
几个替代工具脱颖而出:
(我也见过 OMake ,它似乎是一个自封的“make++
”,其中还包括一套通用语言的标准规则,包括 OCaml 和 ocaml-make née OCamlMakefile,为 GNU make
提供标准规则模板。)
这些是管理 OCaml 构建的首选的现代方式吗?
项目文件的最佳结构是怎样的?
如何包含和管理第 3 方库依赖项?是首选在系统级别安装它们,还是有一种标准且直接的方式将它们本地管理到项目中?我更喜欢项目尽可能独立的模型。
最佳答案
您已经获得了可用选项的完整列表,但这个问题没有明确的答案。我个人的建议也是使用 ocamlbuild。提供的 myocamlbuild.ml 文件 here是一个好的开始。它将允许您轻松编译依赖于各种库的项目。我不认为它可以处理绑定(bind)到 C 库的情况,但是 wiki 上还有其他示例这可能会有所帮助。
有些人反对 ocamlbuild,因为它是另一种构建工具,使包管理器的工作变得复杂。然而,它的易用性以及它包含在官方发行版中的事实使其得到越来越广泛的应用。
你也可以跳过这一切,直接使用oasis。很新,还没有发布稳定版,但是很好用。它将自动为您生成 myocamlbuild.ml。如果还没有的话,这可能是在不久的将来要走的路。此外,通过使用 oasis,您将立即受益于 oasis-db,这是一个正在开发中的 OCaml 类 CPAN 系统。
关于管理库,答案是 ocamlfind。如果您安装了多个 OCaml 实例,则调用 ocamlfind 的适当副本将自动导致对库的所有引用都是针对该特定实例的引用,假设您对所有库系统地使用 ocamlfind。我目前使用 godi 安装 OCaml 和库。它使用 ocamlfind,安装多个 OCaml 实例没有问题。
https://stackoverflow.com/questions/5956317/
相关文章:
visual-studio-2010 - MSbuild 是否需要在构建服务器上安装 Visual
ubuntu - 试图包含一个库,但不断收到 'undefined reference to' 消息
c++ - 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值
ios - Swift 框架不适用于命名为 'Debug' 或 'Release' : No suc
android - 使用 gradle 签署产品 flavor
visual-studio - Visual Studio 在构建期间不断挂起
c# - 自动在 Visual Studio c# 项目中嵌入 mercurial 修订信息
build - CMakeLists.txt 中未使用 CMAKE_BUILD_TYPE