在myocamlbuild中使用pflag时如何使用ocamlopt而不是ocamldep?

时间:2017-10-07 15:33:22

标签: ocamlbuild

我在this manual之后编写了一个包含以下代码的myocamlbuild.ml,以便每次编译用alcotest编写的测试时都不必在命令行输入一些标记ocamlbuild -use-ocamlfind -package alcotest test_foo.native 1}}

open Ocamlbuild_plugin

let () =
  dispatch & function
    | Before_rules ->
      pflag ["test_alcotest"] "package" & fun name -> S [A "-use-ocamlfind"; A "-package"; A name]
    | _ -> ()

我想象命令ocamlbuild test_foo.native会读取我在_tags文件中定义的标记

<test_*.ml>: test_alcotest, package(alcotest)

并会拨打ocamlc.opt -c -o -use-ocamlfind -package alcotest test_foo.ml,但不会;相反它叫ocamldep.opt -use-ocamlfind -package alcotest -pp '-use-ocamlfind -package alcotest' -modules test_foo.ml > test_foo.ml.depends我怎么能改变它?

1 个答案:

答案 0 :(得分:0)

已存在预定义的myocamlbuild.ml参数化标记。如果你想使用它,你不需要-package alcotest;如果你想覆盖它以赋予它不同的含义,我宁愿建议使用另一个名称来避免混淆。

如果你想做的只是通过 <test_*.ml>: package(alcotest) ,你就不需要新的标志定义了。只需使用

ocamlbuild -use-ocamlfind

并使用foreach ( $foo->link as $link ) { $type = (string) $link['type']; if ( $type == 'text/html' ) { echo (string) $link['title']; } } 调用ocamlbuild。