Включение лагера в проект 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().