Muj*_*ull 5 erlang behavior makefile
我的test项目的结构是这样的:
./Emake文件:
{"source/*", [debug_info, {outdir, "binary"}]}.
Run Code Online (Sandbox Code Playgroud)
./source/test.erl:
-module(test).
-behaviour(test_behaviour).
Run Code Online (Sandbox Code Playgroud)
./source/test_behaviour.erl:
-module(test_behaviour).
-export([behaviour_info/1]).
behaviour_info(callbacks) -> [];
behaviour_info(_) -> undefined.
Run Code Online (Sandbox Code Playgroud)
erl -make当我在项目目录 ( ) 中使用该命令时.,我得到以下输出:
重新编译:source/test_behaviour 重新编译:源/测试 source/test.erl:2:警告:行为 test_behaviour 未定义
为什么erl打印这个警告?它test_behaviour.erl之前编译过test.erl,所以我想它应该可以test_behaviour.beam在binary文件夹中找到。
行为在编译时解决。因此Erlang编译器应该找到行为beam文件并调用行为模块的behaviour_info/1函数。
这里test_behaviour.beam不在编译器的代码路径中。您可以通过调用来运行
erl -pa ebin -make
Run Code Online (Sandbox Code Playgroud)
这为我解决了问题。我尝试在 Emakefile 中指定,但没有成功。也找不到文档。还发现 -pa ebin 的 oder 必须在 -make 之前(但不确定为什么)。
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |