OCamlbuild和camlp4选项

时间:2012-04-18 14:18:06

标签: ocaml ocamlbuild camlp4

我正在使用camlp4.macro来启用条件编译。我有 通知OCamlbuild某些文件标记为“use_jscore”的问题 必须使用给定的camlp4选项进行预处理。这就是我目前所拥有的:

let _ = dispatch begin function
  | After_rules ->
    flag ["ocaml"; "use_jscore"] (S[A"-package"; A"camlp4.macro"; A"-syntax"; A"camlp4o"; A"-ppopt"; A"-DUSE_JSCORE"]);

但OCamlbuild让这一切都错了。我正在使用ocamlfind,所以 基本上我想告诉OCamlbuild的是所有标记的OCaml文件 “use_jscore”必须由camlp4.macro预处理,也可以给出 -DUSE_JSCORE选项。

2 个答案:

答案 0 :(得分:4)

_tags和命令行方法也应该有效,尽管它不会针对单个文件。

_tags的内容:

<*.*>: syntax(camlp4o), package(camlp4.macro)

命令行:

ocamlbuild -use-ocamlfind -cflags -ppopt,-DUSE_JSCORE ...

答案 1 :(得分:3)

您在与之匹配的旗帜列表中缺少一个标志:

 let options = S[...] in
 flag ["ocaml"; "compile"; "use_jscore"] options;
 flag ["ocaml"; "ocamldep"; "use_jscore"] options

实际上,只有在计算依赖项(启用“ocamldep”标志)和编译(启用“编译”标志的位置)时才要使用camlp4选项,但是在使用预处理器时(不是“pp”标志已启用)或链接时(启用“链接”标志时)。

现在,如果你使用ocamlbuild -use-ocamlfind <target>它应该可以正常工作。