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

前端 未结 2 1073
醉话见心
醉话见心 2020-12-05 16:13

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

相关标签:
2条回答
  • 2020-12-05 16:22

    $@ is the target of the current rule. $< is the name of the first prerequisite ("source") of the current rule.

    So for example:

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

    This will expand to a command something like:

    gcc -c -Wall -o foo.o foo.c
    

    See also the GNU make manual § 10.5.3, "Automatic Variables".

    0 讨论(0)
  • 2020-12-05 16:36

    $< 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.

    0 讨论(0)
提交回复
热议问题