DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(make) Target-specific

Info Catalog (make) Environment (make) Using Variables (make) Pattern-specific
 
 Target-specific Variable Values
 ===============================
 
    Variable values in `make' are usually global; that is, they are the
 same regardless of where they are evaluated (unless they're reset, of
 course).  One exception to that is automatic variables ( Automatic
 Variables Automatic.).
 
    The other exception is "target-specific variable values".  This
 feature allows you to define different values for the same variable,
 based on the target that `make' is currently building.  As with
 automatic variables, these values are only available within the context
 of a target's command script (and in other target-specific assignments).
 
    Set a target-specific variable value like this:
 
      TARGET ... : VARIABLE-ASSIGNMENT
 
 or like this:
 
      TARGET ... : override VARIABLE-ASSIGNMENT
 
    Multiple TARGET values create a target-specific variable value for
 each member of the target list individually.
 
    The VARIABLE-ASSIGNMENT can be any valid form of assignment;
 recursive (`='), static (`:='), appending (`+='), or conditional
 (`?=').  All variables that appear within the VARIABLE-ASSIGNMENT are
 evaluated within the context of the target: thus, any
 previously-defined target-specific variable values will be in effect.
 Note that this variable is actually distinct from any "global" value:
 the two variables do not have to have the same flavor (recursive vs.
 static).
 
    Target-specific variables have the same priority as any other
 makefile variable.  Variables provided on the command-line (and in the
 environment if the `-e' option is in force) will take precedence.
 Specifying the `override' directive will allow the target-specific
 variable value to be preferred.
 
    There is one more special feature of target-specific variables: when
 you define a target-specific variable, that variable value is also in
 effect for all prerequisites of this target (unless those prerequisites
 override it with their own target-specific variable value).  So, for
 example, a statement like this:
 
      prog : CFLAGS = -g
      prog : prog.o foo.o bar.o
 
 will set `CFLAGS' to `-g' in the command script for `prog', but it will
 also set `CFLAGS' to `-g' in the command scripts that create `prog.o',
 `foo.o', and `bar.o', and any command scripts which create their
 prerequisites.
 
Info Catalog (make) Environment (make) Using Variables (make) Pattern-specific
automatically generated byinfo2html