The module make provides a set of functions similar to
the UNIX type Make functions.
all() -> up_to_date | error
all(Options) -> up_to_date | error
Types:
Options = [Option]
Option = noexec | load | netload | <compiler option>
This function first looks in the current working directory
for a file named Emakefile (see below) specifying the
set of modules to compile and the compile options to use. 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:
noexecloadnetloadAll 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(ModFiles) -> up_to_date | error
files(ModFiles, Options) -> up_to_date | error
Types:
ModFiles = [Module | File]
Module = atom()
File = string()
Options = [Option]
Option = noexec | load | netload | <compiler option>
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 looks in the
current working directory for a file named Emakefile. If
it exists, Emakefile 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]}.