Makefile备忘

1980阅读 0评论2013-02-19 lzj123
分类:C/C++

内置变量
$@: 表示规则中的目标文件集
$<: 依赖目标中的第一个目标名字。如果依赖目标是以模式定义的,那么$<是符合模式的一系列的文件集。文件是一个一个取出的。
$?: 所有比目标新的依赖目标的集合。
$^: 所有依赖目标的集合。(去除重复)
$+: 与$^相似,区别是此变量不去除重复。

取得当前目录下源文件列表
SRCS=$(wildcard *.c)
目标文件列表
OBJS=$(SRCS:.c=.o)

取得文件名(不含目录)
SRCS=$(wildcard ~/test/*.c)
FILENAME=$(notdir $(SRCS))

伪目标
.PHONY:all

显示命令,不执行,调试用

make -n 


目标文件生成在当前目录下

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

目标文件生成在依赖文件所在目录下
.c.o:
$(CC) -c $(CFLAGS) $(INCDIR) $< -o $(<:.c=.o)

.c.o:
$(CC) -c $(CFLAGS) $(INCDIR) $< -o $*.o

上一篇:链接的 multiple definition错误
下一篇:俄罗斯方块小游戏