(make.info)Using Variables


Next: Conditionals Prev: Commands Up: Top

How to Use Variables
********************

   A "variable" is a name defined in a makefile to represent a string
of text, called the variable's "value".  These values are substituted
by explicit request into targets, dependencies, commands, and other
parts of the makefile.  (In some other versions of `make', variables
are called "macros".)

   Variables and functions in all parts of a makefile are expanded when
read, except for the shell commands in rules, the right-hand sides of
variable definitions using `=', and the bodies of variable definitions
using the `define' directive.

   Variables can represent lists of file names, options to pass to
compilers, programs to run, directories to look in for source files,
directories to write output in, or anything else you can imagine.

   A variable name may be any sequence of characters not containing `:',
`#', `=', or leading or trailing whitespace.  However, variable names
containing characters other than letters, numbers, and underscores
should be avoided, as they may be given special meanings in the future,
and with some shells they cannot be passed through the environment to a
sub-`make' (*note Communicating Variables to a Sub-`make':
Variables/Recursion.).

   Variable names are case-sensitive.  The names `foo', `FOO', and
`Foo' all refer to different variables.

   It is traditional to use upper case letters in variable names, but we
recommend using lower case letters for variable names that serve
internal purposes in the makefile, and reserving upper case for
parameters that control implicit rules or for parameters that the user
should override with command options (*note Overriding Variables:
Overriding.).

   A few variables have names that are a single punctuation character or
just a few characters.  These are the "automatic variables", and they
have particular specialized uses.  Note: Automatic Variables.

* Reference
How to use the value of a variable.
* Flavors
Variables come in two flavors.
* Advanced
Advanced features for referencing a variable.
* Values
All the ways variables get their values.
* Setting
How to set a variable in the makefile.
* Appending
How to append more text to the old value of a variable.
* Override Directive
How to set a variable in the makefile even if the user has set it with a command argument.
* Defining
An alternate way to set a variable to a verbatim string.
* Environment
Variable values can come from the environment.
* Automatic
Some special variables have predefined meanings for use with implicit rules.

automatically generated by info2www