Я недавно решил организовать файлы в каталоге моего проекта. Я переместил парсеры, которые у меня были для нескольких разных типов файлов, в их собственный каталог, а также решил использовать ocamlbuild (так как проект становился все более сложным, а простого сценария оболочки больше не хватало).
Мне удалось успешно включить внешние проекты, изменив myocamlbuild с некоторыми базовыми правилами (вызов ocaml_lib
, я буду использовать ocamlfind в другой раз), но я застрял в том, как включить папку в качестве модуля в проект должным образом. Я создал файл parser.mlpack
и заполнил его соответствующими модулями (например, "parser / Date" и т. Д.), Записал parser.mli
в корень каталога для их реализаций и изменил _tags
файл (см. ниже).
Во время компиляции каталог парсера просматривается правильно, и parser.cmi
, parser.mli.depends
оба были созданы в каталоге _build
; а также все файлы *.cm[xio]
в подкаталоге анализатора.
Я чувствую, что могу делать что-то избыточное, но, несмотря на это, проект все еще не может найти модуль Parser при компиляции!
Спасибо!
_tags
debug : true
<*.ml> : annot
"parser" : include
<parser/*.cmx>: for-pack(Parser)
<curlIO.*> : use_curl
<mySQL.*> : use_mysql
<**/*.native> or <**/*.byte> : use_str,use_unix,use_curl,use_mysql
ошибка компиляции
/usr/local/bin/ocamlopt.opt unix.cmxa str.cmxa -g -I /usr/local/lib/ocaml/site-lib/mysql mysql.cmxa -I /usr/local/lib/ocaml/curl curl.cmxa curlIO.cmx utilities.cmx date.cmx fraction.cmx logger.cmx mySQL.cmx data.cmx project.cmx -o project.native
File "\_none\_", line 1, characters 0-1:
Error: **No implementations provided for the following modules:**
Parser referenced from project.cmx
Command exited with code 2.
Вы заметите, -I parser
не входит в фазу связывания выше; фактически ни один из файлов, связанных с парсером, не включен!
edit: Добавлены новые подробности из комментариев и ответа ниже.