Как использовать флаг -thread компилятора с ocamlbuild?
Я использую Jane Street
async_core
, добавляя package(async_core)
в _tags
.
Когда я использую ocamlbuild -use-ocamlfind -I src test/test_airport.native
, он вызывает следующую ошибку:
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 switch
Я googled, и вот что я получил http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual039.html
В нем говорится:
Программы, использующие системные потоки, должны быть связаны следующим образом:
ocamlc -thread other options unix.cma threads.cma other files
Итак, я изменил команду ocamlbuild следующим образом:
ocamlbuild -use-ocamlfind -cflag -thread -I src test/test_airport.native
Но ошибка остается прежней. также фактическая команда, созданная ocamlbuild, остается неизменной без -thread
.
Как я могу справиться с этим?
Ответы
Ответ 1
Что вы хотите знать о том, есть ли тег ocamlbuild (~ feature), чтобы добавить аргумент -thread
в соответствующие командные строки, вместо того чтобы взломать его -cflag
неудовлетворительными способами. Как объясняется в этом сообщении в блоге, вы должны использовать опцию -documentation
ocamlbuild:
% 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
line или просто thread
в соответствующем месте в _tags
.