3

我安装的 OCaml 无法识别 #!,因此无法独立运行 camlp4o。它必须作为“ocamlrun camlp4o”调用。

我尝试在插件中添加一个标志。但是新标志只是简单地添加到现有标志中。

结果是 ocamlbuild 将调用编译器

“-pp camlp4o ocamlrun camlp4o”。

一个可行的解决方法是引入一个新标签“my_camlp4o”。但是,ocamlbuild 的文档确实提到了“覆盖”默认值的能力。看来ocamlc,ocamlopt可以被覆盖。但是我们可以覆盖camlp4o吗?可以在插件中完成吗?

4

1 回答 1

2

-ocamlc <command>支持通过等-ocamldep <command>命令行选项更改 Ocamlbuild 中的默认值。不幸的是,camlp4 目前不是可定制命令集的一部分。您能否使用问题跟踪器请求此功能?

(与此同时,我推荐一种解决方法,例如ocamlrun,将 PATH 中的可执行文件替换为执行正确操作的可执行脚本。)

编辑

另一种解决方法是通过 进行所有编译ocamlfind,它支持覆盖camlp4 命令(请参阅文档),并且可以用作所有带有-use-ocamlfind选项的ocamlbuild 命令的基础。不幸的是,ocamlfind 本身仅支持在编译时(调用实际编译器时)进行预处理,而不支持独立的源到源处理,因此可能无法涵盖您自己的用例。

于 2013-03-01T09:49:37.597 回答