Erlang Emacs模式 - 设置outdir

6

有人知道如何配置Erlang Emacs模式,使得编译缓冲区[C-c C-k]将beam文件写入ebin目录而不是当前目录吗?

谢谢!

2个回答

1
如果您按照以下方式设置目录结构:
/
/src/
/ebin/

将您的模块(例如“my_file.erl”)放置在“/src/”目录中,然后编译它(C-c C-k),然后Emacs应自动将beam文件放入“/ebin/”目录中。

但是,如果您的模块不在名为“/src/”的目录中(或者如果缺少“ebin”目录),则beam文件将与源文件一起丢弃。

要了解这个过程的确切工作方式,请查看$ERL_TOP/lib/tools/emacs/erlang.el并搜索“ebin”。以下是您将找到的内容:

(defun inferior-erlang-compile-outdir ()
  "Return the directory to compile the current buffer into."
  (let* ((buffer-dir (directory-file-name
              (file-name-directory (buffer-file-name))))
     (parent-dir (directory-file-name
              (file-name-directory buffer-dir)))
         (ebin-dir (concat (file-name-as-directory parent-dir) "ebin"))
     (buffer-dir-base-name (file-name-nondirectory 
                (expand-file-name
                 (concat (file-name-as-directory buffer-dir)
                     ".")))))
    (if (and (string= buffer-dir-base-name "src")
         (file-directory-p ebin-dir))
    (file-name-as-directory ebin-dir)
      (file-name-as-directory buffer-dir))))

不确定这个好东西是什么时候添加的,但它在OTP_R13B03中,并且在R14B03中对我有效。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接