2015-01-04 3 views
3

Я использую ocamlbuild для компиляции библиотеки OCaml через файл mylib.mllib, в котором перечислены модули, содержащие библиотеку. Впоследствии я хочу установить файлы библиотеки, используя ocamlfind. В отличие от двоичных файлов, построенных с ocamlbuild, все файлы библиотеки находятся в каталоге _build. Правильно ли способ установить их что-то вродеСтроительная библиотека с ocamlbuild, устанавливающая ее с ocamlfind - в чем лучшая практика?

ocamlfind install META _build/a.cma _build/a.cmxa ... 

или есть более тесная интеграция между ocamlbuild и ocamlfind? В частности, я заметил флаг -install-lib-dirocamlbuild, но не могу найти документацию о его назначении.

Я знаю oasis, но прямо сейчас хотел бы решить проблему в файле Makefile и цели install. Все это в контексте использования менеджера библиотеки opam, но это не должно иметь значения для обсуждения.

+1

Возможно, вы знаете, что opam предоставляет механизм для установки файлов, я просто хотел упомянуть об этом на всякий случай. – didierc

+1

Указанный вами вариант переопределяет каталог по умолчанию, в котором расположены библиотеки ocamlbuild (обычно '/ usr/lib/ocaml/ocamlbuild /'). Попробуйте 'ocamlbuild -where', затем повторите попытку с этой опцией и фиктивным путем, чтобы проверить его эффект. – didierc

+2

Нет никакой конкретной интеграции между ocamlbuild и ocamlfind install-wise. Поддержка Ocamlfind была добавлена ​​в ocamlbuild долгое время после ее первого выпуска, и изначально ocamlbuild не предназначался для использования ocamlfind. Поскольку проект был перехвачен его новым сопровождающим, ocamlbuild начал поддерживать ocamlfind для своих функций управления пакетами, но установка не входит в обязанности ocamlbuild, поэтому и началась разработка оазиса и opam. – didierc

ответ

1

Нет, нет конкретной интеграции. ocamlbuild является агностиком инструментов предварительной сборки (конфигурации) и пост-сборки (установки), а ocamlfind аналогично агностически связан с инструментами построения.

Вы правы, что ocamlbuild не очень хорошо надежно имитирует цели с _build/. Это известный глюк, но вы должны быть уверены в конкретных случаях, когда это проблема для вас. В любом случае, я думаю, что лучше обратиться к файлу в _build/ напрямую.

Существует Дания Bünzli feature request, так как ocamlbuild помогает создавать файлы OPAM .install, а не записывать их вручную (или make-скрипты). У меня лично не было времени для работы над такими функциями, но я бы тепло приветствовал любой вклад, который был сделан на этом фронте.

 Смежные вопросы

  • Нет связанных вопросов^_^