what does $< and $@ mean in make file

Thomson picture Thomson · Jan 14, 2011 · Viewed 10.9k times · Source

I found these pseudo variable name in my makefile in WDK build environment. What is referenced by these variables? It is a little hard for me to get the answer by search engine because they are special, I believe.

Answer

Xavier Nodet picture Xavier Nodet · Jan 14, 2011

These are automatic variables:

$@ The file name of the target of the rule. If the target is an archive member, then ‘$@’ is the name of the archive file. In a pattern rule that has multiple targets (see Introduction to Pattern Rules), ‘$@’ is the name of whichever target caused the rule's recipe to be run.

$< The name of the first prerequisite. If the target got its recipe from an implicit rule, this will be the first prerequisite added by the implicit rule (see Implicit Rules).

They are used to build rules that can be applied to different targets so that one does not need to repeat the same rule for each and every file that must be worked on...

PS: To find the answer, I first looked for the 'all documentation on a single page' for GNU make, then used my browser's search function...