Unix/Linux Go Back    

Unix Version 7 - man page for make (v7 section 1)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

MAKE(1) 										  MAKE(1)

       make - maintain program groups

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

       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  suf-
       fix  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  spe-
       cial 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  con-
	      tinue 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:'.

       makefile, Makefile

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

       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.

Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 09:03 PM.