Использование ocamldoc с пакетами
У меня есть проект ocamlbuild, который включает некоторые файлы в подкаталог с файлом.mlpack, перечисляя их.
например, у меня есть файл support/logging.ml
который определяет модуль Support.Logging
, _tags
файл говорит "support": for-pack(Support)
,
Это все строит и работает нормально. Но как я могу сгенерировать документы для этого с помощью ocamldoc?
Самым последним сообщением, которое я нашел, было поколение ocamldoc и упакованные файлы 2011 года, в которых предлагается использовать ocp-pack
создать один большой файл.ml и передать его ocamldoc
, Однако это не учитывает порядок сборки, поэтому сгенерированный модуль не работает из-за прямых ссылок.
Какой лучший способ справиться с этим?
2 ответа
Вот решение, которое я сейчас использую в своем Makefile. Это работает, и перекрестные ссылки в модуль поддержки работают:
doc:
ocp-pack -o support.ml.tmp support/logging.ml support/common.ml support/utils.ml support/basedir.ml support/qdom.ml support/system.ml
echo '(** General support code; not 0install-specific *)' > support.ml
cat support.ml.tmp >> support.ml
rm support.ml.tmp
$(OCAMLBUILD) 0install.docdir/index.html
rm support.ml
Это взломано, потому что:
- Вы должны перечислить файлы support.ml в порядке сборки вручную
- Makefile добавляет комментарии к документации для поддержки (в противном случае требуется описание первого подмодуля, который вам не нужен)
Проблема описана в следующем сообщении об ошибке. обращение -pack
Внутри ocamldoc требуются усилия по внедрению, которые сопровождающий не мотивирует выполнять, и до сих пор никто не подошел, чтобы внести исправление для этой функции.
В то же время, вы можете легко скопировать foo.mlpack
файл в foo.odocl
генерирование документации отдельных подмодулей. Это всего лишь несовершенный обходной путь, так как доктор расскажет о X
скорее, чем Foo.X
, но это решение с наименьшими усилиями.