如何使用ocamlbuild将-S标志传递给ocamlopt?

时间:2014-12-06 15:29:52

标签: ocaml ocamlbuild

我希望在使用ocamlbuild和corebuild命令构建时将-S标志传递给ocamlopt。

我理解正在做ocamlbuild -cflag -S ...之所以无法工作,因为-S标志仅存在于ocamlopt而非ocamlc。

如何使用_tags文件执行此操作?

1 个答案:

答案 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