7

编译 erlang 文件时,erlc我可以添加额外的包含目录,如下所示:

erlc -I /home/trotter/code/open-source/yaws/include src/myapp.erl

但是,当我从内部编译时erl,我看不到在命令行上执行此操作的方法。相反,我必须在 repl 中执行以下操作:

> compile:file("src/myapp", 
               [verbose,
                report_errors,
                {i,"/home/trotter/code/open-source/yaws/include"}]).

有没有更好的方法来做到这一点,我不知道,比如将一些命令行参数传递给 erl?如果没有,任何干燥的建议都不需要我每次编译时都输入讨厌的路径。

4

2 回答 2

6

我很少从 shell 编译——仅用于带有c(foo). 我的设置是这样的:

我有一个构建基础设施。make构建软件(make 只是rebar这里的包装器)。emacs然后我可以通过点击F12绑定到compileemacs 命令从内部构建代码。如果我的 vim 记忆对我有用(已经有几年了),vim你可以对命令执行相同的操作。:make现在这当然会构建代码并将其放入ebin目录中。

下一步是使用有关ebin目录的知识启动 Erlang:

 erl -pa ./ebin

这意味着对模块的任何引用foo都会去检查./ebin/foo.beam. 当我发现我必须修复一些代码时,我在编辑器中修复它,编译代码,F12然后l(foo)在热加载代码的 shell 中执行。

它还有一个好处是任何编译错误现在都在编辑器的管辖范围内,所以我可以快速跳转到错误并修复它。

于 2010-12-05T03:36:41.370 回答
2

你可以设置ERL_COMPILER_OPTIONS

http://www.erlang.org/doc/man/compile.html

于 2010-12-05T21:42:39.287 回答