【问题标题】:Emakefile - custom behaviour undefinedEmakefile - 自定义行为未定义
【发布时间】:2013-04-18 08:51:20
【问题描述】:

我的test 项目的结构是这样的:

./Emakefile:

{"source/*", [debug_info, {outdir, "binary"}]}.

./source/test.erl:

-module(test).
-behaviour(test_behaviour).

./source/test_behaviour.erl:

-module(test_behaviour).
-export([behaviour_info/1]).

behaviour_info(callbacks) -> [];
behaviour_info(_) -> undefined.

当我在项目目录(.)中使用命令erl -make时,我得到以下输出:

重新编译:source/test_behaviour
重新编译:源码/测试
source/test.erl:2: 警告:行为 test_behaviour undefined

为什么erl 会打印此警告?它在test.erl之前编译了test_behaviour.erl,所以我猜它应该能够在binary文件夹中找到test_behaviour.beam

【问题讨论】:

    标签: erlang makefile behavior


    【解决方案1】:

    行为在编译时解决。因此,Erlang 编译器应该找到行为束文件并调用行为模块的behaviour_info/1 函数。

    这里的 test_behaviour.beam 不在编译器的代码路径中。你可以通过调用来运行

    erl -pa ebin -make
    

    这解决了我的问题。我尝试在 Emakefile 中指定,但没有运气。也找不到文档。 还发现 -pa ebin 的 oder 必须在 -make 之前(虽然不知道为什么)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      • 2011-01-19
      相关资源
      最近更新 更多