|GNU Make Manual||www.imodulo.com · 2003-04-05|
|[ Software | Documentation | Contact ]|
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).
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
-g in the command script for
prog, but it will also set
-g in the command scripts that create
bar.o, and any command scripts which create their prerequisites.
|© Free Software Foundation, Inc.|