Linux基础教程:makefile和make规则(3)

$(VAR) 使用变量,如果变量名为单字符,可以不使用圆括号或花括号

${VAR} 同上

$@ 当前目标文件

$* 删除了后缀的目标名

$《 依赖列表中,比当前目标更新的当前依赖名称(即第一个依赖文件)

$^ 整个依赖列表

$? 依赖列表中,比当前目标更新的当前依赖列表

CFLAGS 通常默认值是-O,但是可以被修改

未使用后缀规则的makefile文件变成如下:

OBJS=foo.o bar.o

SOURCES=foo.c bar.c

HEADERS=foo.h bar.h

CC=gcc

CFLAGS=-Wall -O -g

myprog : $(OBJS)

$(CC) $^ -o $@

foo.o : foo.c foo.h bar.h

$(CC) $(CFLAGS) –c $《 -o $@

bar.o : bar.c bar.h

$(CC) $(CFLAGS) –c $《 -o $@

而使用了后缀规则的makefile文件变成如下:

OBJS=foo.o bar.o

SOURCES=foo.c bar.c

HEADERS=foo.h bar.h

CC=gcc

myprog : $(OBJS)

$(CC) S^ -o $@

foo.o : foo.h bar.h

bar.o : bar.h

虚目标

假设一个项目最后需要产生两个可执行文件exec1和exec2,但两个文件是相互独立的,此时可使用假想目的all来达到效果。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25221.html