oasis选择了错误的OCAML构建

oasis选择了错误的OCAML构建,ocaml,ocamlbuild,ocamlfind,oasis,Ocaml,Ocamlbuild,Ocamlfind,Oasis,我尝试用Opam提供的Ocaml版本编译Ocaml项目。 我的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/

我尝试用Opam提供的Ocaml版本编译Ocaml项目。 我的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,但没有成功,有人知道怎么做吗? 谢谢

您一定错过了

eval $(opam config env)
请参阅的文档

请注意,通常情况下,
opam
的安装过程应该已经完成,以便在新shell上自动调用它。您可能需要再次运行
opam init
,它将提示您同意对
.profile
进行更改,以便在启动新shell时一切正常


编辑:事实上,看起来您在显示的两个调用之间切换到了
系统
。因此,似乎在
系统中
开关
sexp
未安装。在任何情况下,只要在shell中
opam开关
,总是调用上面提到的命令,以便设置正确的路径

尝试删除
setup.data
并再次运行
make
。Oasis在您第一次尝试构建时缓存路径,之后不会自动更新路径。也许您试图构建它,然后使用
opam开关
,然后再次尝试构建它?

除了Thomas的答案之外,您还可以通过

ocaml setup.ml -distclean

谢谢,实际上它没有任何变化。。Opam指出了4.02.1版本,我没有尝试更改它。当我用Ocamlfind检查我的库时,它是OK的:Ocamlfind query sexplib/Users/fred/.Opam/4.02.1/lib/sexplib,当我用Opam列表检查时,会显示sexplib。所以我认为问题来自oasis。我在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/?我不知道这
make
的背后是什么,你可以在上面找到我的_oasis文件,但我现在可以构建我的项目了,谢谢,它工作了!当我在那之后尝试“make”时,我的ocamlbuild和ocamlfind路径指向我的Opam repo。我想自从上次构建我的项目以来,我已经升级了我的OCaml版本