绿洲捡起了错误的ocamlbuild

时间:2015-04-30 12:09:06

标签: 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/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

我试图告诉绿洲哪个版本的ocambuild没有成功使用,有人知道怎么做吗? 感谢

2 个答案:

答案 0 :(得分:3)

你一定错过了

eval $(opam config env)

请参阅opam switch的文档。

请注意,通常opam的安装过程应该在新shell上自动调用。您可能希望再次运行opam init,它会提示您同意对.profile进行更改,以便在您启动新炮弹时一切正常。

编辑:事实上,您似乎已更改为向我们展示的两个调用之间的system切换。所以似乎没有安装system开关sexp。在任何情况下,只要你在shell中opam switch总是调用我上面提到的命令,以便设置正确的路径。

答案 1 :(得分:0)

除了Thomas的回答,您可以通过

放弃配置
ocaml setup.ml -distclean