查看源码 make (工具 v4.1.1)

Erlang 的 Make 工具

模块 make 提供了一组类似于 UNIX 类型 Make 函数的功能。

Emakefile

make:all/0,1make:files/1,2 首先在选项中查找 {emake, Emake},然后在当前工作目录中查找名为 Emakefile 的文件。如果存在,Emake 应包含如下元素

Modules.
{Modules,Options}.

Modules 是一个原子或原子列表。它可以是

  • 一个模块名称,例如,file1
  • 另一个目录中的模块名称,例如,'../foo/file3'
  • 一组使用通配符指定的模块,例如,'file*'
  • 一个指示当前目录中所有模块的通配符,即:'*'
  • 上述任何一项的列表,例如,['file*','../foo/file3','File4']

Options 是编译器选项的列表。

Emakefile 从上到下读取。如果一个模块匹配多个条目,则使用第一个匹配项。例如,以下 Emakefile 表示 file1 应使用选项 [debug_info,{i,"../foo"}] 编译,而当前目录中的所有其他文件应仅使用 debug_info 标志编译。

{'file1',[debug_info,{i,"../foo"}]}.
{'*',[debug_info]}.

另请参阅

编译器应用程序

概要

函数

等同于 all([])

此函数通过首先查找 emake make 选项来确定要编译的模块集和要使用的编译选项,如果不存在,则从名为 Emakefile 的文件中读取配置(见下文)。如果未找到此类文件,则要编译的模块集默认为当前工作目录中的所有模块。

此函数的功能与 all/0,1 完全相同,但针对指定的 ModFiles,它是模块或文件名称的列表。

函数

-spec all() -> up_to_date | error.

等同于 all([])

-spec all(Options) -> up_to_date | error
             when
                 Options :: [Option],
                 Option :: noexec | load | netload | {emake, Emake} | compile:option(),
                 Emake :: [EmakeElement],
                 EmakeElement :: Modules | {Modules, [compile:option()]},
                 Modules :: atom() | [atom()].

此函数通过首先查找 emake make 选项来确定要编译的模块集和要使用的编译选项,如果不存在,则从名为 Emakefile 的文件中读取配置(见下文)。如果未找到此类文件,则要编译的模块集默认为当前工作目录中的所有模块。

遍历模块集,然后重新编译满足以下至少一个条件的每个模块

  • 没有目标文件,或者
  • 自上次编译以来,源文件已被修改,或者,
  • 自上次编译源文件以来,包含文件已被修改。

作为副作用,该函数会打印它尝试编译的每个模块的名称。如果模块编译失败,则 make 过程停止并返回 error

Optionsmake 和 Erlang 编译器的选项列表。存在以下 make 选项

  • noexec 无执行模式。仅打印需要编译的每个模块的名称。
  • load 加载模式。加载所有重新编译的模块。
  • netload 网络加载模式。在所有已知节点上加载所有重新编译的模块。
  • {emake, Emake} 而不是读取 Emakefile,显式指定配置。

Options 中所有不是 make 选项的项目都被假定为编译器选项,并按原样传递给 compile:file/2

-spec files(ModFiles) -> up_to_date | error
               when ModFiles :: [(Module :: module()) | (File :: file:filename())].

等同于 files(ModFiles, [])

链接到此函数

files(ModFiles, Options)

查看源码
-spec files(ModFiles, Options) -> up_to_date | error
               when
                   ModFiles :: [(Module :: module()) | (File :: file:filename())],
                   Options :: [Option],
                   Option :: noexec | load | netload | compile:option().

此函数的功能与 all/0,1 完全相同,但针对指定的 ModFiles,它是模块或文件名称的列表。

可以省略文件扩展名 .erl

在当前目录中搜索 Emakefile(如果存在)以查找每个模块的编译器选项。如果 Emakefile 中不存在给定模块,或者 Emakefile 不存在,则仍会编译该模块。