This section summarizes creating and using macros , internal macros, macro modifiers, macros with special handling, and text manipulation with macros and functions.
Macros (often called variables) are like variables in a programming language. In make, they are most similar to variables in the shell language, having string values that can be assigned, referenced, and compared.
GNU make provides multiple ways to define macros. The different mechanisms affect how make treats the value being assigned. This in turn affects how the value is treated when the macro's value is retrieved, or referenced. GNU make defines two types of variables, called recursively expanded variables and simply expanded variables, respectively. The various macro assignment forms are as follows:
Create a recursively expanded variable. The value of
name is the verbatim
text on the right side of the
=. If this value contains any
references to other variable values, those values are
retrieved and expanded when the original variable is
referenced. For example:
bar = v1 foo = $(bar) Value of bar retrieved when foo's value is referenced ... x = $(foo) x is assigned 'v1' bar = v2 y = $(foo)y is assigned 'v2'
Create a simply expanded variable. The value is expanded completely, immediately at the time of the assignment. Any variable references in value are expanded then and there. For example:
bar = v1 foo := $(bar) foo is assigned 'v1' x = $(foo) ...