如何在使用ocamlbuild编译时向ocamlopt传递-S标志?

6
我希望在使用ocamlbuild和corebuild命令构建时向ocamlopt传递-S标志。
我知道使用ocamlbuild -cflag -S ...不起作用,因为-S标志仅适用于ocamlopt而不是ocamlc。
我该如何使用_tags文件实现这一点?
1个回答

4
这里提供一种使用myocamlbuild.ml_tags的方法。在myocamlbuild.ml中,添加一个flag指令,让ocamlbuild识别新的标签 - 这里是keep_asm - 在编译为本机代码时选定文件启用-S
flag ["ocaml";"compile";"native";"keep_asm"] (S [A "-S"]);

没有在传递给flag的列表中添加"native"字符串,该标志将对使用"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 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接