使用ocamldoc和包

时间:2013-06-28 15:44:25

标签: ocaml ocamldoc

我有一个ocamlbuild项目,其中包含一个子目录中的一些文件,其中列出了.mlpack文件。

e.g。我有一个文件support/logging.ml,它定义了模块Support.Logging_tags文件显示"support": for-pack(Support)

这一切都构建并运行良好。但是如何使用ocamldoc为此生成文档?

我发现的最新帖子是2011年的ocamldoc generation and packed files,建议使用ocp-pack生成一个大的.ml文件并将其传递给ocamldoc。但是,这没有考虑构建顺序,因此生成的模块由于前向引用而无法工作。

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

问题在the following bugreport中描述。在ocamldoc中处理-pack需要一个维护者没有动力执行的实现工作,到目前为止还没有人加紧为此功能提供补丁。

与此同时,您可以轻松地将foo.mlpack文件复制到foo.odocl,生成单独子模块的文档。这只是一个不完美的解决方法,因为文档会讨论X而不是Foo.X,但这是最省力的解决方案。

答案 1 :(得分: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为支持添加了文档注释(否则,它会获取您不想要的第一个子模块的描述)