我的OCaml安装无法识别#!,因此camlp4o无法独立运行。它必须被调用为“ocamlrun camlp4o”。
我尝试在插件中添加一个标志。但新标志只是添加到现有标志。
结果是ocamlbuild将使用
调用编译器“ - pp camlp4o ocamlrun camlp4o”。
一种有效的解决方法是引入一个新标签'my_camlp4o'。但是,ocamlbuild的文档确实提到了“覆盖”默认值的功能。看来ocamlc,ocamlopt可以被覆盖。但我们可以覆盖camlp4o吗?它可以在插件中完成吗?
答案 0 :(得分:2)
支持通过-ocamlc <command>
,-ocamldep <command>
等命令行选项更改Ocamlbuild中的默认值。不幸的是,camlp4目前不是可自定义命令集的一部分。您能否使用issue tracker申请此功能?
(与此同时,我建议使用一种解决方法,例如,用可执行脚本替换PATH中的ocamlrun
可执行文件。(
修改强>
另一种解决方法是通过ocamlfind
完成所有编译,它支持覆盖camlp4命令(请参阅the documentation),并且可以作为所有ocamlbuild命令的基础,使用{{ 1}}选项。不幸的是,ocamlfind本身只支持在编译时进行预处理(在调用实际编译器时),而不是独立的源到源处理,因此可能无法覆盖您自己的用例。