失败:在路径上找不到ocamlfind,但是没有使用-no-ocamlfind(zsh终端)

时间:2018-03-20 13:44:31

标签: emacs ocaml

当我尝试使用

在emacs中编译我的文件时
ocamlbuild -use-ocamlfind main.native

我有这个错误:

ocamlbuild -use-ocamlfind main.native
Failure: ocamlfind not found on path, but -no-ocamlfind not used.

当我使用相同的命令编译它但在我的终端(zsh)中,我没有问题。我认为emacs没有找到ocamlfind有问题,但我不明白这个问题可能是什么。 (一切都安装了opam,我在已安装的软件包中安装了OCamlbuild和OCamlfind,我做了eval $(opam config env)

当我M-x getenv PATH时,我在终端中拥有完全相同的路径。

2 个答案:

答案 0 :(得分:1)

显然,在Emacs中未正确设置环境。您可以从执行eval $(opam config env)的终端运行emacs,然后它将继承所有需要的变量。或者,您可以使用以下命令:

(defun opam-env ()
  (interactive nil)
  (dolist (var
           (car (read-from-string
                 (shell-command-to-string "opam config env --sexp"))))
    (setenv (car var) (cadr var))))

只需将其添加到初始化脚本中,并在运行新的Emacs副本或每次切换到另一个编译器时使用M-x opam-env运行。

答案 1 :(得分:1)

使它成功的是在emacs中写这个:

(setq shell-file-name "zsh")
(setq shell-command-switch "-ic")

我不明白为什么。