Могу ли я добавить каталоги включения в команду erl? - PullRequest
7 голосов
/ 04 декабря 2010

При компиляции файла erlang с erlc я могу добавить дополнительные каталоги включения, например:

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

Когда я компилирую из erl, я не вижу способа сделать это в командной строке. Вместо этого я должен сделать следующее в репле:

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

Есть ли лучший способ сделать это, о котором я не знаю, например, передать некоторый аргумент командной строки в erl? Если нет, то любые предложения по этому вопросу, которые не требуют от меня вводить неприятные пути каждый раз, когда я компилирую.

Ответы [ 2 ]

5 голосов
/ 05 декабря 2010

Я редко компилирую из оболочки - только для небольших тестовых скриптов с c(foo). Моя установка такова:

У меня есть инфраструктура сборки. make собирает программное обеспечение (здесь - просто оболочка для rebar). Затем я могу собрать код из emacs, нажав F12, привязанную к команде compile emacs. В vim вы можете сделать то же самое с командой :make, если моя память vim служит мне (это было пару лет). Теперь это, конечно, создает код и добавляет его в ebin dir.

Следующим шагом является запуск Erlang со знанием о ebin dir:

 erl -pa ./ebin

, что означает, что любая ссылка на модуль foo отправляется и проверяется на ./ebin/foo.beam. Когда я выясняю, что мне нужно исправить какой-то код, я исправляю его в редакторе, компилирую код с помощью F12, а затем выполняю l(foo) в оболочке, которая горячо загружает код.

Он также имеет то преимущество, что любая ошибка компиляции теперь находится в юрисдикции редактора, поэтому я могу быстро перейти к ошибке и исправить ее.

2 голосов
/ 06 декабря 2010

вы можете установить ERL_COMPILER_OPTIONS.

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

...