Go to the first, previous, next, last section, table of contents.

### Substitution References

A substitution reference substitutes the value of a variable with alterations that you specify. It has the form ``$(var:a=b)'` (or ``${var:a=b}'`) and its meaning is to take the value of the variable var, replace every a at the end of a word with b in that value, and substitute the resulting string.

When we say "at the end of a word", we mean that a must appear either followed by whitespace or at the end of the value in order to be replaced; other occurrences of a in the value are unaltered. For example:

    foo := a.o b.o c.o
    bar := $(foo:.o=.c)

sets ``bar'` to ``a.c b.c c.c'`. See section Setting Variables.

A substitution reference is actually an abbreviation for use of the `patsubst` expansion function (see section Functions for String Substitution and Analysis). We provide substitution references as well as `patsubst` for compatibility with other implementations of `make`.

Another type of substitution reference lets you use the full power of the `patsubst` function. It has the same form ``$(var:a=b)'` described above, except that now a must contain a single ``%'` character. This case is equivalent to ``$(patsubst a,b,$(var))'`. See section Functions for String Substitution and Analysis, for a description of the `patsubst` function.

    For example:

    foo := a.o b.o c.o
    bar := $(foo:%.o=%.c)

sets ``bar'` to ``a.c b.c c.c'`.

Go to the first, previous, next, last section, table of contents.