Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

Unix

Unix v7

make(1)


MAKE

MAKE

NAME
SYNOPSIS
DESCRIPTION
FILES
SEE ALSO
BUGS

NAME

make − maintain program groups

SYNOPSIS

make [ −f makefile ] [ option ] ... file ...

DESCRIPTION

Make executes commands in makefile to update one or more target names. Name is typically a program. If no −f option is present, ’makefile’ and ’Makefile’ are tried in order. If makefile is ’−’, the standard input is taken. More than one −f option may appear

Make updates a target if it depends on prerequisite files that have been modified since the target was last modified, or if the target does not exist.

Makefile contains a sequence of entries that specify dependencies. The first line of an entry is a blank-separated list of targets, then a colon, then a list of prerequisite files. Text following a semicolon, and all following lines that begin with a tab, are shell commands to be executed to update the target.

Sharp and newline surround comments.

The following makefile says that ’pgm’ depends on two files ’a.o’ and ’b.o’, and that they in turn depend on ’.c’ files and a common file ’incl’.

pgm: a.o b.o
cc a.o b.o −lm −o pgm

a.o: incl a.c

cc −c a.c

b.o: incl b.c

cc −c b.c

Makefile

entries of the form

string1 = string2

are macro definitions. Subsequent appearances of $(string1) are replaced by string2. If string1 is a single character, the parentheses are optional.

Make infers prerequisites for files for which makefile gives no construction commands. For example, a ’.c’ file may be inferred as prerequisite for a ’.o’ file and be compiled to produce the ’.o’ file. Thus the preceding example can be done more briefly:

pgm: a.o b.o
cc a.o b.o −lm −o pgm

a.o b.o: incl

Prerequisites are inferred according to selected suffixes listed as the ’prerequisites’ for the special name ’.SUFFIXES’; multiple lists accumulate; an empty list clears what came before. Order is significant; the first possible name for which both a file and a rule as described in the next paragraph exist is inferred. The default list is

.SUFFIXES: .out .o .c .e .r .f .y .l .s

The rule to create a file with suffix s2

that depends on a similarly named file with suffix s1 is specified as an entry for the ’target’ s1s2. In such an entry, the special macro $* stands for the target name with suffix deleted, $@ for the full target name, $< for the complete list of prerequisites, and $? for the list of prerequisites that are out of date. For example, a rule for making optimized ’.o’ files from ’.c’ files is

.c.o: ; cc −c −O −o $@ $*.c

Certain macros are used by the default inference rules to communicate optional arguments to any resulting compilations. In particular, ’CFLAGS’ is used for cc and f77(1) options, ’LFLAGS’ and ’YFLAGS’ for lex and yacc(1) options.

Command lines are executed one at a time, each by its own shell. A line is printed when it is executed unless the special target ’.SILENT’ is in makefile, or the first character of the command is ’@’.

Commands returning nonzero status (see intro(1)) cause make to terminate unless the special target ’.IGNORE’ is in makefile or the command begins with <tab><hyphen>.

Interrupt and quit cause the target to be deleted unless the target depends on the special name ’.PRECIOUS’.

Other options:

−i

Equivalent to the special entry ’.IGNORE:’.

−k

When a command returns nonzero status, abandon work on the current entry, but continue on branches that do not depend on the current entry.

−n

Trace and print, but do not execute the commands needed to update the targets.

−t

Touch, i.e. update the modified date of targets, without executing any commands.

−r

Equivalent to an initial special entry ’.SUFFIXES:’ with no list.

−s

Equivalent to the special entry ’.SILENT:’.

FILES

makefile, Makefile

SEE ALSO

sh(1), touch(1)
S. I. Feldman Make − A Program for Maintaining Computer Programs

BUGS

Some commands return nonzero status inappropriately. Use −i to overcome the difficulty.
Commands that are directly executed by the shell, notably cd(1), are ineffectual across newlines in make.



make(1)