Оазис забирает неправильно 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