Включение лагера в проект erlang.mk

Я пытаюсь добавить лагер в простой проект erlang.mk. Я понимаю, что в lager используются преобразования синтаксического анализа, поэтому вы должны соответствующим образом установить флаги компиляции; поэтому следующий совет отсюда:

Сбой вызовов Lager во время тестовых прогонов Common Test

мой Makefile выглядит следующим образом:

PROJECT = hello_erlang_mk
DEPS = cowboy lager

# this must be first
include erlang.mk

# Compile flags
ERLC_COMPILE_OPTS= +'{parse_transform, lager_transform}'

# Append these settings
ERLC_OPTS += $(ERLC_COMPILE_OPTS)
TEST_ERLC_OPTS += $(ERLC_COMPILE_OPTS)

Релиз строится нормально, но, похоже, что-то вроде лагера в него не входит:

Eshell V5.10.4  (abort with ^G)
(hello_erlang_mk@127.0.0.1)1> lager:info("~s is ~s!", [lager, cool]).
** exception error: undefined function lager:info/2

У кого-нибудь есть указания на то, как заставить лагер работать в рамках проекта erlang.mk?

[Я использую Erlang R16B03, Ubuntu 14.04]

Благодарю.

2 ответа

Решение

Прости меня. Нуб ошибка. Применение: пуск (лагер). Сожалею.

Я считаю, что нет ничего общего с erlang.mk. Проблема в том, что вы пытаетесь вызвать lager: info из оболочки. Но на самом деле такой функции в модуле лагера нет. lager: info - это просто команда для анализа преобразования, которая разворачивается в некоторые другие (более сложные) конструкции во время компиляции.

Если вы хотите проверить, содержит ли ваше приложение лагер, вы можете попробовать, например, из оболочки lager:status() (которая является "честной" функцией в модуле лагера). Или лагер:module_info().

Другие вопросы по тегам