2010-12-04 19 views
7

Al compilar un archivo de Erlang con erlc puedo añadir también cuentan con directorios de este modo:¿Puedo agregar directorios de inclusión al comando erl?

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

Cuando Estoy compilando desde dentro erl sin embargo, no veo una manera de hacer esto en la línea de comandos. En su lugar, tengo que hacer lo siguiente dentro de la réplica:

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

¿Hay una mejor manera de hacer esto que no sé acerca, tales como pasar un argumento de línea de comandos a ERL? Si no, cualquier sugerencia para secar esto que no haga requerirá que escriba rutas desagradables cada vez que compilo.

Respuesta

5

Raramente compilo desde el shell - solo para pequeños scripts de prueba con c(foo). Mi configuración es la siguiente:

Tengo una infraestructura de compilación. make crea el software (make es solo un contenedor para rebar aquí). Luego puedo crear código desde emacs al presionar F12 vinculado al comando compile emacs. En vim puede hacer lo mismo con el comando :make si mi memoria vim me sirve (ha pasado un par de años). Ahora esto, por supuesto, construye el código y lo lanza a un directorio ebin.

El siguiente paso es empezar a Erlang con el conocimiento acerca de la ebin dir:

erl -pa ./ebin 

lo que significa que cualquier referencia al módulo foo va y cheques por ./ebin/foo.beam. Cuando descubro que tengo que arreglar un código, lo arreglo en el editor, compilo el código con F12 y luego ejecuto l(foo) en el shell que carga el código en caliente.

También tiene la ventaja de que cualquier error de compilación ahora está bajo la jurisdicción del editor, así que puedo saltar rápidamente al error y corregirlo.

+0

Bueno, esa es una solución totalmente mejor a mi problema. No sabía que podía usar l (foo) para cargar en caliente el código compilado. – Trotter

+0

Para facilitar las cosas, creé un archivo .erlang en la raíz del proyecto con 'code: add_patha (" ./ dict ").'. Agregó la ruta "dict" al principio de la lista de búsqueda de ruta cada vez que ejecuto 'erl' en ese proyecto. – Carlosedp

Cuestiones relacionadas