通过ocamlbuild将选项传递给camlp4
我正在使用ocamlbuild对ocamlfind的本机支持来简化项目的构建过程。 文件通过ocamlbuild将选项传递给camlp4,ocaml,ocamlbuild,camlp4,ocamlfind,Ocaml,Ocamlbuild,Camlp4,Ocamlfind,我正在使用ocamlbuild对ocamlfind的本机支持来简化项目的构建过程。 文件foo.ml依赖于使用camlp4宏的条件编译。\u标签文件包含以下内容: <foo.ml>: package(camlp4.macro), syntax(camlp4o) 但是在使用ocamlbuild+ocamlfind时,如何将-DFOO变量传递给camlp4?我觉得应该有一个简单的命令行选项,而不是必须搞乱myocamlbuild.ml你要搞乱myocamlbuild.ml。没有插入-p
foo.ml
依赖于使用camlp4宏的条件编译。\u标签
文件包含以下内容:
<foo.ml>: package(camlp4.macro), syntax(camlp4o)
但是在使用ocamlbuild+ocamlfind时,如何将
-DFOO
变量传递给camlp4?我觉得应该有一个简单的命令行选项,而不是必须搞乱myocamlbuild.ml
你要搞乱myocamlbuild.ml
。没有插入-ppopt的内置规则,因此它相当详细,但很简单
build.ml
:
open Ocamlbuild_plugin ;;
dispatch begin function
| After_rules ->
pflag ["ocaml";"compile";] "define" (fun s -> S [A"-ppopt"; A ("-D"^s)]);
pflag ["ocaml";"ocamldep";] "define" (fun s -> S [A"-ppopt"; A ("-D"^s)])
| _ -> ()
end;;
在\u标签中
:
"foo.ml": syntax(camlp4o), package(camlp4.macro), define(FOO)
请注意,如果将
-pp
和-ppopt
传递给ocamlfind,则它似乎忽略了-ppopt
的值。因此,我必须从我的ocamlbuild\u标签
文件中删除“camlp4of”标签,并在我的myocamlbuild.ml
文件中设置-pp
。
"foo.ml": syntax(camlp4o), package(camlp4.macro), define(FOO)