- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我生成的文档中包含源代码。这在我调用 ocamldoc
时有效在这样的命令行上:ocamldoc -I _build -html -keep-code -colorize-code *.{ml,mli} -d .docdir
.但是,我在将其与 ocamlbuild
集成时遇到了麻烦。 .
我在 myocamlbuild.ml
中使用以下代码:
open Ocamlbuild_plugin;;
dispatch begin function
| After_options ->
Options.ocamldoc := S[A"ocamldoc"; A"-keep-code"; A"-colorize-code"]
| _ -> ()
end
ocamlbuild
拒绝通过
.ml
文件到
ocamldoc
当有
.mli
文件存在。有没有办法哄 ocamlbuild 做我想做的事?
最佳答案
因为我需要破解一些东西来做类似的事情,所以如果我在这里发布它作为答案可能会有所帮助(至少在 OCamlbuild 具有该功能之前)。所以,这是我的 myocamlbuild.ml
的相关部分:
open Ocamlbuild_plugin;;
dispatch begin function
| After_rules ->
(* Using both .ml and .mli files to build documentation: *)
rule "ocaml: ml & mli -> odoc"
~insert:`top
~tags:["ocaml"; "doc"; "doc_use_interf_n_implem"]
~prod:"%.odoc"
(* "%.cmo" so that cmis of ml dependencies are already built: *)
~deps:["%.ml"; "%.mli"; "%.cmo"]
begin fun env build ->
let mli = env "%.mli" and ml = env "%.ml" and odoc = env "%.odoc" in
let tags =
(Tags.union (tags_of_pathname mli) (tags_of_pathname ml))
++"doc_use_interf_n_implem"++"ocaml"++"doc" in
let include_dirs = Pathname.include_dirs_of (Pathname.dirname ml) in
let include_flags =
List.fold_right (fun p acc -> A"-I" :: A p :: acc) include_dirs [] in
Cmd (S [!Options.ocamldoc; A"-dump"; Px odoc;
T (tags++"doc"++"pp"); S (include_flags);
A"-intf"; P mli; A"-impl"; P ml])
end;
(* Specifying merge options with tags: *)
pflag ["ocaml"; "doc"; "doc_use_interf_n_implem"] "merge"
(fun s -> S[A"-m"; A s]);
end
doc_use_interf_n_implem
至
.ml
和/或
.mli
应该从实现和接口(interface)生成文档的文件应该可以解决问题。
merge(A)
(合并所有)。
camlp[45]
对其进行测试。 -processed 文件,也不使用 4.00.1 以外的 OCamlbuild 版本。
关于ocaml - 使 ocamlbuild 将 .ml 和 .mli 文件都传递给 ocamldoc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828221/
我正在尝试引用 ocamldoc 中的类型构造函数。 例如: type x = Awesome | Boring 稍后我们想在某些文档中引用其中一个构造函数: (** {!Awesome} is a
我有一个 ocamlbuild 项目,它在一个子目录中包含一些文件,并在一个 .mlpack 文件中列出它们。 例如我有一个文件 support/logging.ml,它定义了模块 Support.L
这是一个示例界面test.mli , 用 ocamldoc 风格的评论评论: (** ocamldoc module comment *) open MissingModule;; (** ocaml
我想在我生成的文档中包含源代码。这在我调用 ocamldoc 时有效在这样的命令行上:ocamldoc -I _build -html -keep-code -colorize-code *.{ml,
我是一名优秀的程序员,十分优秀!