2009-12-04 121 views

回答

27

文档描述the difference between include and include_lib的方法是:

include_lib类似于include,但不应该指出一个绝对的文件。相反,第一个路径组件(可能在变量替换之后)被假定为应用程序的名称。

例子:

-include_lib("kernel/include/file.hrl").

代码服务器使用代码:LIB_DIR(内核),找到核心的电流(最新)版本的目录,然后将子目录包括中搜索文件文件.hrl。

所以在你的例子中,你不需要指出你包含的eunit版本,你需要包括存在于你的库路径中的eunit:s的最新版本eunit.hrl。

+2

我相信你也可以使用include_lib来包含你想从特定版本的已安装应用程序中获得的文件。 – 2009-12-05 00:45:01

10

首先不明显的一个差异是-include-include_lib在查找头文件时使用了一组不同的路径。 -include_lib实际上使用了代码路径,而不是头文件路径。

因此,标志erlc预计添加路径到-include搜索路径是-I; -include_lib的标志是-pa/-pz

已经提到的事实是,使用-include_lib可以避免我们将模块指定(并因此绑定)到特定的库版本。

此外,还有一个约定,内部接头存储在src/子目录一个项目内,并使用-include包括在内。 外部文件头(打算供其他库/项目使用)文件存储在include/中,并使用-include_lib包含在内。