OCamlbuild和camlp4选项

Jon*_*ark 5 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"]);
Run Code Online (Sandbox Code Playgroud)

但OCamlbuild完全没错了.我正在使用ocamlfind,所以基本上我想告诉OCamlbuild的是所有标记为"use_jscore"的OCaml文件必须由camlp4.macro预处理,同样也给出了-DUSE_JSCORE选项.

Tho*_*mas 3

您在匹配的标志列表中缺少一个标志:

 let options = S[...] in
 flag ["ocaml"; "compile"; "use_jscore"] options;
 flag ["ocaml"; "ocamldep"; "use_jscore"] options
Run Code Online (Sandbox Code Playgroud)

事实上,您只想在计算依赖项(启用“ocamldep”标志的情况下)和编译(启用“compile”标志的情况下)时使用 camlp4 选项,而不是在使用预处理器(其中“pp”标志的情况下)时使用 camlp4 选项。 “ 标志已启用)或当您链接时(当启用“链接”标志时)。

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