4

我尝试使用 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 没有成功,有人知道怎么做吗?谢谢

4

3 回答 3

5

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

于 2015-05-02T12:23:56.353 回答
3

你一定错过了一个

eval $(opam config env)

请参阅 的文档opam switch

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

编辑:实际上,您似乎更改为向system我们展示的两个调用之间的切换。所以好像在systemswitchsexp中没有安装。无论如何,只要您opam switch在 shell 中始终调用我上面提到的命令,以便设置正确的路径。

于 2015-04-30T12:41:22.487 回答
0

除了 Thomas 的回答之外,您还可以通过以下方式丢弃配置

ocaml setup.ml -distclean
于 2016-09-20T07:57:24.967 回答