What do $< and $@ represent in a Makefile?

makefile

Solution

`$<` evaluates to the first "prerequisite" in the make rule, and `$@` evaluates to the "target" in the make rule.

Here's an example:

file.o : file.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

In this case, `$<` will be replaced with `file.c` and `$@` will be `file.o`.

These are more useful in generic rules like this:

%.o : %.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

See this manual for more info.

Problem

Can anybody please explain the meaning of `$<` and `$@` in a `Makefile`?

Original source

Related problems