Как я могу написать библиотеку в OCaml?

Я пишу кодировщик / декодер bson в ocaml.

У меня есть исходный файл сейчас (на самом деле только один файл).

Мой вопрос в том, как мне сделать это как библиотеку, такую ​​как ocaml-batteries-included, camomile, так далее?

Я имею в виду, люди могут использовать opam install это и использовать ocamlfind + ocamlbuild скомпилировать с этим?

3 ответа

Решение

Поддержки ocamlfind это действительно легко, и нет никаких оправданий, чтобы этого не делать. По сути, выберите любую "похожую" библиотеку, найдите файл META и адаптируйте его под свои собственные настройки. Я дал некоторые основные инструкции в этом ответе Stackru.

OCamlbuild - это система сборки, которую вы можете использовать по своему усмотрению или нет, но она не должна влиять на ваших пользователей (кроме того факта, что они захотят установить ее до сборки ваших программ). Вы также можете использовать Makefile или любую другую систему сборки (omake и т. Д.). Идея ocamlbuild состоит в том, чтобы просто _tags файл с достаточной информацией для создания вашей библиотеки / программы (и если вы делаете myocamlbuild.ml файл также). Опять же, посмотрите, какие проекты имеют структуру, аналогичную вашей.

Для Opam есть руководство по упаковке, которое дает ваши указания (но, опять же, просто адаптируйте то, что делают другие люди).

Я представлю кое-что немного нестандартное, но полностью пригодное для использования: obuild. Все, что вам нужно, это project.obuild файл, а затем obuild build построит ваш проект. obuild install установит его с помощью ocamlfind.

Установите obuild из github вместо opam, так как версия opam немного устарела. Вот образец obuild файл, чтобы дать вам идею: https://github.com/vbmithr/ocaml-websocket/blob/master/websocket.obuild

Пойти на оазис; вы в основном создаете файл _oasis это описывает вашу библиотеку. oasis Затем инструмент создаст для вас систему сборки. Вы можете установить Oasis через Opam. Для Oasis есть краткое руководство по началу работы.

Oasis - это попытка стандартизировать машиночитаемое описание пакетов OCaml. И в то же время, он может создать систему сборки как побочный продукт (в настоящее время ocamlbuild на основе одного и Makefiles поддерживаются).

Другие вопросы по тегам