2016-10-07 3 views
1

Я пытаюсь задокументировать небольшой проект, используя ocamldoc.
У меня есть один файл .ml, который opens два других файла .ml.Ocamldoc и открытые модули

$ ocamldoc -html included1.ml included2.ml 

работает просто отлично, но когда я добавляю в том числе файл, как

$ ocamldoc -html included1.ml included2.ml including.ml 

я получаю это:

File "including.ml", line 5, characters 5-16: 
Error: Unbound module Included1 
1 error(s) encountered 

Я вижу из ocamldoc documentation, что открытие модулей прекрасно, пока не возникнет конфликт.
Как мне продолжить?

ответ

2

Это нормально, если модуль использует другие модули, однако он должен иметь возможность видеть скомпилированные интерфейсы для них. Поэтому в вашем случае вам сначала нужно скомпилировать файлы .ml для генерации файлов .cmi. Затем вам нужно указать ocamldoc, где находятся эти файлы. Так что-то вроде этого нужно сделать:

ocamlc -c included1.ml 
ocamlc -c included2.ml 
ocamlc -c -I . including.ml 
ocamldoc -html -I . included1.ml included2.ml including.ml 

Обратите внимание, что в целом это хорошая (обязательно) практика создания .mli файлов для каждого из ваших модулей документа и ocamldoc этих, а не .ml файлов.

+1

черт, просто написал тот же ответ :) Кстати, '-I .' не нужен, так как он будет выглядеть в текущем каталоге по умолчанию. – ivg

+0

Извините ... Да, это может быть не нужно. Я думаю, что в инструменте есть инструмент, если он нужен, но я никогда не помню, какой из них (а может, я и мечтал). –

+0

О, хорошо ... Я думал, что это только для внешних зависимостей, а не для файлов в одном каталоге и включенных в список! =) Спасибо! – pimple