如何在ocamlbuild中使用-thread编译器标志?

时间:2013-05-14 21:03:39

标签: ocaml ocamlbuild

我在Jane Street添加async_core时使用package(async_core)的{​​{1}}。

当我使用_tags时,它会给我以下错误:

  

camlfind ocamlopt -linkpkg -package async_core -package unix -package   netclient -package mongo -package xml-light src / airport.cmx   test / test_airport.cmx -o test / test_airport.native ocamlfind:错误   来自包'threads':缺少-thread或-vmthread开关


我用Google搜索了,这是我得到的http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual039.html

它说:

  

使用系统线程的程序必须按如下方式链接:

ocamlbuild -use-ocamlfind -I src test/test_airport.native

所以我改变了我的ocamlbuild命令:

ocamlc -thread other options unix.cma threads.cma other files

但错误仍然相同。如果没有ocamlbuild -use-ocamlfind -cflag -thread -I src test/test_airport.native,ocamlbuild生成的实际命令也保持不变。


我该如何处理?

1 个答案:

答案 0 :(得分:21)

您想知道的是,是否有一个ocamlbuild标记(〜功能)将-thread参数添加到相关命令行,而不是以不满意的方式使用-cflag进行黑客攻击。正如in this blog post所解释的那样,您应该使用ocamlbuild的-documentation选项:

% ocamlbuild -documentation | grep thread
flag {. byte, link, ocaml, program, thread .} "threads.cma -thread"
flag {. link, native, ocaml, program, thread .} "threads.cmxa -thread"
flag {. doc, ocaml, thread .} "-I +threads"
flag {. compile, ocaml, thread .} "-thread"

所以答案是:将-tag thread添加到ocamlbuild调用中 行,或thread中相关位置的_tags