Как добавить -thread в _oasis для компиляции с Core

Я использовал oasis для создания своего проекта с использованием некоторых внешних пакетов. Теперь я также хочу использовать основной пакет Джейн Стрит. Однако для компиляции с Core вы должны передать флаг -thread в ocamlfind, например. как это:

ocamlfind ocamlc -linkpkg -thread -package core foo.ml -o foo

Как я могу указать oasis добавить флаг -thread? Прямо сейчас мой файл _oasis содержит что-то вроде следующего:

Executable "foo"
  BuildDepends: core,batteries,bar
  Path: src
  MainIs: foo.ml
  CompiledObject: best

Бар коллекция моих собственных утилит из того же проекта. Когда я запускаю oasis setup и make, я получаю эту ошибку:

ocamlfind: Error from package `threads': Missing -thread or -vmthread switch

Я просмотрел руководство Oasis, и ни общие поля для всех разделы файла _oasis, ни поля, относящиеся к разделу Excutable кажется подходящим для добавления флага командной строки для ocamlfind.

Я подумал, что этот ответ может быть актуальным, но когда я попытался добавить дополнительные ключи, которые он предложил, с -thread в качестве значения для XOCamlbuildExtraArgs, у меня ошибка:

E: Field XOCamlbuildExtraArgs is not defined in schema Executable

person Mars    schedule 19.06.2017    source источник


Ответы (1)


Вам нужно добавить следующую строку в файл _tags:

<**/*>: thread

Между разделителями OASIS_START и OASIS_STOP будет куча всего, не добавляйте ничего между ними, а лучше до или после.

person ivg    schedule 19.06.2017
comment
спасибо ивг. Это помогло. (_tags автоматически генерируется oasis setup, но, похоже, не перезаписывается после его создания, поэтому это решение должно работать в целом.) - person Mars; 19.06.2017
comment
Для всех, кто придет, то, что я написал в этом комментарии, было неправильным. _tags можно изменить с помощью oasis setup, но оставит дополнительную строку в конце как есть. - person Mars; 20.06.2017
comment
Я попробовал вышеописанное с BuildDepends: \n core в очень простом однострочном «проекте», но я получаю: Error: Files /usr/local/lib/ocaml/threads/threads.cmxa and /usr/local/lib/ocaml/threads/threads.cmxa both define a module named Thread (да, это один и тот же путь дважды… wtf?) - person ELLIOTTCABLE; 03.10.2017