make: Reference
6.1 Basics of Variable References
=================================
To substitute a variable's value, write a dollar sign followed by the
name of the variable in parentheses or braces: either '$(foo)' or
'${foo}' is a valid reference to the variable 'foo'. This special
significance of '$' is why you must write '$$' to have the effect of a
single dollar sign in a file name or recipe.
Variable references can be used in any context: targets,
prerequisites, recipes, most directives, and new variable values. Here
is an example of a common case, where a variable holds the names of all
the object files in a program:
objects = program.o foo.o utils.o
program : $(objects)
cc -o program $(objects)
$(objects) : defs.h
Variable references work by strict textual substitution. Thus, the
rule
foo = c
prog.o : prog.$(foo)
$(foo)$(foo) -$(foo) prog.$(foo)
could be used to compile a C program 'prog.c'. Since spaces before the
variable value are ignored in variable assignments, the value of 'foo'
is precisely 'c'. (Don't actually write your makefiles this way!)
A dollar sign followed by a character other than a dollar sign,
open-parenthesis or open-brace treats that single character as the
variable name. Thus, you could reference the variable 'x' with '$x'.
However, this practice is strongly discouraged, except in the case of
the automatic variables (Automatic Variables).