我正在使用camlp4.宏来启用条件编译。我在通知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的是,所有带有"use_jscore“标签的OCaml文件都必须由camlp4.宏进行预处理,它也被赋予了-DUSE_JSCORE选项。
发布于 2012-04-19 05:31:35
_tags和命令行方法应该也可以使用,尽管它不会针对单个文件。
_tags的内容:
<*.*>: syntax(camlp4o), package(camlp4.macro)命令行:
ocamlbuild -use-ocamlfind -cflags -ppopt,-DUSE_JSCORE ...发布于 2012-04-19 01:06:33
您要匹配的标志列表中缺少一个标志:
let options = S[...] in
flag ["ocaml"; "compile"; "use_jscore"] options;
flag ["ocaml"; "ocamldep"; "use_jscore"] options实际上,您只想在计算依赖项(启用"ocamldep“标志)和编译(启用”camlp4“标志)时使用编译选项,而不是在使用预处理器(启用"pp”标志)或链接(启用" link“标志时)时使用编译选项。
所以现在如果你使用ocamlbuild -use-ocamlfind <target>,它应该可以正常工作。
https://stackoverflow.com/questions/10211326
复制相似问题