oasis выбирает неправильный ocamlbuild

Я пытаюсь скомпилировать проект Ocaml с версией Ocaml, предоставленной Opam. Мои ocamlbuild, ocamlfind и oasis кажутся нормальными:

/Users/fred/.opam/4.02.1/bin/ocamlbuild
dhcp-182-73:compil fred$ which ocamlfind
/Users/fred/.opam/4.02.1/bin/ocamlfind
dhcp-182-73:compil fred$ which oasis
/Users/fred/.opam/4.02.1/bin/oasis

Но когда я пытаюсь скомпилировать, кажется, что вызывается неправильная версия ocamlbuild, и даже версия ocamlfind верна, я думаю, это объясняет, почему ocamlfind не может найти библиотеку sexplib.

$ make
ocaml setup.ml -build 
Finished, 0 targets (0 cached) in 00:00:00.
+ /Users/fred/.opam/system/bin/ocamlfind ocamldep -package threads -package sexplib.syntax -package core -package comparelib.syntax -modules  src/tricot/tricot.mli > src/tricot/tricot.mli.depends
ocamlfind: Package `sexplib.syntax' not found
Command exited with code 2.
Compilation unsuccessful after building 1 target (0 cached) in 00:00:00.
E: Failure("Command ''/usr/local/bin/ocamlbuild' src/tricot/tricot.cma src/tricot/tricot.cmxa src/tricot/tricot.a src/tricot/tricot.cmxs src/compil/compil.cma src/compil/compil.cmxa src/compil/compil.a src/compil/compil.cmxs src/main.native -use-ocamlfind -tag debug' terminated with error code 10")
make: *** [build] Error 1

Я безуспешно пытался сказать oasis, какую версию ocambuild использовать, кто-нибудь знает, как это можно сделать? Спасибо


person Frédéric Lang    schedule 30.04.2015    source источник


Ответы (3)


Попробуйте удалить setup.data и снова запустить make. Oasis кэширует пути при первой попытке построения и не обновляет их автоматически впоследствии. Возможно, вы пытались построить его, затем использовали opam switch, а затем снова пытались построить?

person Thomas Leonard    schedule 02.05.2015
comment
Спасибо, это работает! когда я попробовал «сделать» после этого, мой путь к ocamlbuild и ocamlfind указывал на мое репозиторий Opam. Я думаю, что обновил свою версию OCaml с тех пор, как в последний раз создавал свой проект - person Frédéric Lang; 06.05.2015

Вы, должно быть, скучаете по

eval $(opam config env)

См. Документацию opam switch.

Обратите внимание, что обычно процедура установки opam должна выполняться так, чтобы она вызывалась автоматически в новых оболочках. Вы можете захотеть запустить opam init снова, он предложит вам согласиться на внесение изменений в ваш .profile, чтобы все было в порядке, когда вы запускаете новые оболочки.

РЕДАКТИРОВАТЬ: На самом деле похоже, что вы перешли на переключатель system между двумя вызовами, которые вы нам показываете. Так вроде в system переключатель sexp не установлен. В любом случае, когда вы opam switch в оболочке, всегда вызывайте команду, о которой я упоминал выше, чтобы настроить правильные пути.

person Daniel Bünzli    schedule 30.04.2015
comment
Спасибо, на самом деле никаких сдвигов не наблюдается .. Opam указывает на версию 4.02.1, и я не пытался ее менять. - person Frédéric Lang; 01.05.2015
comment
Когда я проверяю свою библиотеку с помощью Ocamlfind, все в порядке: ocamlfind query sexplib /Users/fred/.opam/4.02.1/lib/sexplib И когда я проверяю список opam, отображается sexplib. - person Frédéric Lang; 01.05.2015
comment
Так что я думаю, что проблема в оазисе. Я просмотрел свой файл setup.data, он написан ocamlc = / usr / local / bin / ocamlc.opt ocamlopt = / usr / local / bin / ocamlopt.opt ocamlbuild = / usr / local / bin / ocamlbuild Но я не понимаю, почему он не выбирает мою версию этих программ, которые находятся в /Users/fred/.opam/4.02.1/bin/ ?? - person Frédéric Lang; 01.05.2015
comment
Ну, я не знаю, что за этим make - person Daniel Bünzli; 02.05.2015
comment
Вы можете найти мой файл _oasis на github, но я могу создать свой проект сейчас, спасибо - person Frédéric Lang; 06.05.2015

В дополнение к ответу Томаса вы можете отказаться от конфигурации,

ocaml setup.ml -distclean
person Yusuke Yoshimoto    schedule 20.09.2016