3

我正在使用 ocamlbuild 对 ocamlfind 的原生支持来简化我的项目的构建过程。Filefoo.ml依赖于使用camlp4 的宏进行条件编译。该_tags文件包含以下内容:

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

这很好用,但我无法将选项传递给camlp4。如果不使用 ocamlbuild+ocamlfind 自动化,命令行将是这样的:

camlp4o pa_macro.cmo -DFOO file.ml

-DFOO但是在使用 ocamlbuild+ocamlfind 时如何传递 camlp4变量?我觉得应该有一个简单的命令行选项,而不是乱用myocamlbuild.ml.

4

1 回答 1

5

你会搞砸的myocamlbuild.ml。插入 -ppopt 没有内置规则,因此它相当冗长,但很简单。

myocamlbuild.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;;

_tags

"foo.ml": syntax(camlp4o), package(camlp4.macro), define(FOO)
于 2012-08-08T15:36:41.120 回答