make
A Make Utility for Erlang
The module make
provides a set of functions similar to the UNIX type Make
functions.
This function determines the set of modules to compile and the compile options to use, by first looking for the emake
make option, if not present reads the configuration from a file named Emakefile
(see below). If no such file is found, the set of modules to compile defaults to all modules in the current working directory.
Traversing the set of modules, it then recompiles every module for which at least one of the following conditions apply:
As a side effect, the function prints the name of each module it tries to compile. If compilation fails for a module, the make procedure stops and error
is returned.
Options
is a list of make- and compiler options. The following make options exist:
noexec
load
netload
{emake, Emake}
Emakefile
specify configuration explicitly.All items in Options
that are not make options are assumed to be compiler options and are passed as-is to compile:file/2
. Options
defaults to []
.
files/1,2
does exactly the same thing as all/0,1
but for the specified ModFiles
, which is a list of module or file names. The file extension .erl
may be omitted.
The Emakefile
(if it exists) in the current directory is searched for compiler options for each module. If a given module does not exist in Emakefile
or if Emakefile
does not exist, the module is still compiled.
make:all/0,1
and make:files/1,2
first looks for {emake, Emake}
in options, then in the current working directory for a file named Emakefile
. If present Emake
should contain elements like this:
Modules. {Modules,Options}.
Modules
is an atom or a list of atoms. It can be
file1
../foo/file3
'file*'
'*'
['file*','../foo/file3','File4']
Options
is a list of compiler options.
Emakefile
is read from top to bottom. If a module matches more than one entry, the first match is valid. For example, the following Emakefile
means that file1
shall be compiled with the options [debug_info,{i,"../foo"}]
, while all other files in the current directory shall be compiled with only the debug_info
flag.
{'file1',[debug_info,{i,"../foo"}]}. {'*',[debug_info]}.
© 2010–2017 Ericsson AB
Licensed under the Apache License, Version 2.0.