请在下面的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)
答案 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