Erlang - Makefiles - PullRequest
       24

Erlang - Makefiles

0 голосов
/ 21 августа 2010

Надеюсь, у всех все хорошо

У меня проблема с make-файлами в erlang на windows. Я не могу заставить следующий код работать.

.SUFFIXES: .erl .beam

.erl.beam:
    erlc -W $<

    ERL = erl -boot start_clean

MODS = main send get loops

all: compile
    ${ERL} -pa 'G:\Documents and Settings\Administrador' -s main start

compile: ${MODS:%=%.beam}

clean: 
    rm -rf *.beam erl_crash.dump

Я пытаюсь скомпилировать файлы main.erl send.erl get.erl loops.erl

Я сохраняю файл make как .exe

А типа

make [main]

в оболочку Windows

Все, что мне дает это странная ошибка всплывающего окна. Правильна ли команда make [main]? И мой настоящий код правильный?

Спасибо за помощь, -B

Ответы [ 2 ]

6 голосов
/ 21 августа 2010

Несколько ошибок здесь:

  1. Строка ERL = с отступом не будет работать правильно. Ведущие вкладки являются специальными, чтобы сделать. У вас нет полной свободы форматирования, как с некоторыми другими языками.

  2. Файл make должен быть сохранен как Makefile, без расширений. Случай может иметь или не иметь значения для вашей конкретной программы "make". Все версии make принимают Makefile, однако.

  3. Скобки в командной строке никогда не будут работать. Я предполагаю, что вы их где-то вырезали и вставляли, но они, вероятно, использовали «[main]» в качестве примера текста, который вы должны заменить, включая скобки.

  4. «make main» также потерпит неудачу, потому что у вас нет «основной» цели в этом Makefile. «make all», «make clean» и «make compile» будут работать, как и несколько неявных целей, таких как «make loops.beam».

    Вы действительно должны получить книгу о марке, если вы собираетесь продолжать использовать ее. Мне нравится Управление проектами O'Reilly с помощью GNU Make, 3 / e от Mecklenburg, доступное бесплатно онлайн или в виде мертвого дерева. Руководство по сборке GNU также доступно онлайн и как мертвые деревья .

  5. Однако, вероятно, вам не следует использовать традиционное «make». Для чисто эрлангских проектов Emakefiles короче, понятнее и в целом лучше. Они не так хороши для создания других вещей рядом с вашим проектом Erlang, но вы всегда можете сделать и то и другое: Makefile использует «erl -make» для запуска сборки Erlang и делает все остальное самостоятельно.

1 голос
/ 24 августа 2010

Ваш фактический код выглядит более или менее правильным. Вы должны удалить отступ для строки, начинающейся с ERL, и убедиться, что в начале всех строк с отступом есть TAB (не SPACE). (Если у вас нет локализованной версии Windows, вам также следует проверить орфографию администратора.)

Имя вашего Makefile должно быть Makefile (без типа файла, заканчивающегося вообще), и вы должны запустить его с make. Просто запись make в командной строке запустит самую верхнюю команду make (которая в вашем случае 'all'). Если вы хотите запустить любую из других команд (или все явно), просто добавьте это к вашей команде make, например, «make clean», «make foo.beam».

Также рассмотрите возможность размещения ваших исходных файлов в src / и ваших скомпилированных файлов в ebin /, так как это стандарт Erlang.

Я рекомендую эту страницу для получения дополнительной информации о make (если вы используете GNU Make): http://www.gnu.org/software/make/manual/make.html

...