我可以在erl命令中添加include目录吗?

Tro*_*ter 7 erlang erlang-shell

使用erlc我编译erlang文件时可以添加其他包含目录,如下所示:

erlc -I /home/trotter/code/open-source/yaws/include src/myapp.erl
Run Code Online (Sandbox Code Playgroud)

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

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

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

I G*_*ERS 5

我很少从shell编译 - 只适用于带有的小型测试脚本c(foo).我的设置是这样的:

我有一个构建基础架构.make构建软件(make只是rebar这里的包装器).然后我可以emacs通过命中F12绑定到compileemacs命令从内部构建代码.在vim你可以做同样用:make命令,如果我的vim记错的话(它一直是几年).现在这当然构建代码并将其放入ebin目录中.

下一步是启动Erlang,了解有关ebindir的知识:

 erl -pa ./ebin
Run Code Online (Sandbox Code Playgroud)

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

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