makefile别名

时间:2010-10-14 12:08:16

标签: makefile

请在下面的makefile中解释$ @ $ ^ $

LIBS  = -lkernel32 -luser32 -lgdi32 -lopengl32
CFLAGS = -Wall

# (This should be the actual list of C files)
SRC=$(wildcard '*.c')

test: $(SRC)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)

2 个答案:

答案 0 :(得分:6)

这就是这两个符号的含义:

  • $ @是目标,即test
  • $ ^是规则的先决条件列表(在本例中是SRC=$(wildcard '*.c')中指定的扩展通配符列表)

所有这些变量都在GNU make手册的Automatic variables page中解释。

答案 1 :(得分:2)

SRC=$(wildcard '*.c')  

这只是你的所有源文件名以.c结尾,即file1.c,file2.c file3.c等。

in

test: $(SRC)
    gcc -o $@ $^ $(CFLAGS) $(LIBS)

$是一种在Makefile中定义变量的方法

$ @是你的目标,在你的情况下,它是" test"。

$ ^是规则的所有先决条件的列表,包括找到它们的目录的名称

$<是所有依赖项的列表

参考:https://www.gnu.org/software/make/manual/make.html#Automatic-Variables