makefile符号$ @和$ <是什么意思?

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

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

$@$<做什么?


$@是正在生成的文件的名称,并且$<第一个先决条件(通常是源文件)。 您可以在GNU Make手册中找到所有这些特殊变量的列表。

例如,请考虑以下声明:

all: library.cpp main.cpp

在这种情况下:

  • $@评估为all
  • $<评估为library.cpp
  • $^评估为library.cpp main.cpp

  • $@$<被称为自动变量。 $@是输出变量。 $<是第一个输入变量。 例如:

    hello.o: hello.c hello.h
             gcc -c $< -o $@
    

    这里, hello.o是输出文件。 这是$@扩展到的。 第一个依赖是hello.c 。 这就是$<扩展到的。

    -c标志生成.o文件; 请参阅man gcc获取更详细的解释。 -o指定要输出到的文件。

    有关更多详细信息,请阅读本文。

    另外,你可以检查GNU手册。 有一种方法可以调试makefile以更好地理解它。

    这将输出makefile数据库:

    $make -p 
    

    $@$<是特殊的宏。

    哪里:

    $@是目标的文件名。

    $<是第一个依赖项的名称。

    链接地址: http://www.djcxy.com/p/61439.html

    上一篇: What do the makefile symbols $@ and $< mean?

    下一篇: How to make a SIMPLE C++ Makefile?