Оазис забирает неправильно ocamlbuild

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

/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 использовать без успеха, кто-нибудь знает, как это можно сделать? Спасибо

3 ответа

Решение

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

Вы должны пропустить

eval $(opam config env)

Смотрите документацию opam switch,

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

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

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

ocaml setup.ml -distclean
Другие вопросы по тегам