我希望在使用ocamlbuild和corebuild命令构建时将-S
标志传递给ocamlopt。
我理解正在做ocamlbuild -cflag -S ...
之所以无法工作,因为-S
标志仅存在于ocamlopt而非ocamlc。
如何使用_tags文件执行此操作?
答案 0 :(得分:4)
以下是使用 myocamlbuild.ml 和 _tags 进行此操作的一种方法。
在 myocamlbuild.ml 中,添加flag
指令让ocamlbuild识别新标记 - 此处 keep_asm - 这将启用-S
编译为 native 时选择的文件:
flag ["ocaml";"compile";"native";"keep_asm"] (S [A "-S"]);
如果列表中的"native"
字符串未传递给flag
,则使用 ocaml (如指示的话)为任何编译阶段启用该标记通过字符串"ocaml"
和"compile"
),并在调用 ocamlc 时触发,这是您不想要的。
因此,对于完全独立的 myocamlbuild.ml 仅执行上述操作,结果如下:
open Ocamlbuild_plugin;;
open Command;;
dispatch begin function
| Before_rules ->
begin
end
| After_rules ->
begin
flag ["ocaml";"compile";"native";"keep_asm"] (S [ A "-S"]);
end
| _ -> ()
end
有一次,您已经定义了新标记,您可以在 _tags 文件中使用它,就像使用任何其他标记一样,例如:
<myfile.ml>: use_bigarray, keep_asm