如何强制emacs的erlang-compile命令在include目录中搜索

时间:2014-09-23 20:58:00

标签: emacs erlang compiler-options

我开始在一些现有的erlang项目上使用emacs。我想使用命令erlang-compile,如果可能的话使用快捷方式C-c C-k,但它失败了,因为我的大多数项目使用位于include目录中的一些.hrl文件,而命令只知道src和ebin目录(它是erlang应用程序的常用目录树)

我通过编辑所有include指令找到了一个解决方法,并在每个文件名之前添加了include目录的相对路径,但是我不喜欢这个,如果我想使用选项debug_info进行编译,它就无济于事,export_all,native ...

另一种解决方法是使用外部命令,但在这种情况下,我会松开 - 我猜 - 编译错误和源代码之间的联系。

正确的方法应该是将选项列表传递给命令(例如[{i,"../include"},debug_info])。

我试图使用M-: (erlang-compile XXX)“评估”命令,但它失败了(我不知道一点lisp语法,无论如何,似乎erlang-compile没有参数......)

我已经看到了这个主题Use rebar in emacs?,但是,据我所知解决方案,它将使用外部命令,它将表现得像我的第二个解决方法。

是否有其他方式或设置来传递这些参数?

2 个答案:

答案 0 :(得分:1)

这不是您要找的,但我建议您使用EDTS。它包含很少有用的功能,包括可以在.edts配置文件中设置的目录,并且它会尝试使用每个文件保存来编译代码。

只是一个想法。我会尝试使用Emakefile界面。它似乎足够标准,emacs / erlang集成可以使用它。

答案 1 :(得分:0)

您可以在erlang-compile-extra-opts变量中设置包含路径。例如:

(setq erlang-compile-extra-opts '((i . "../include") debug_info))