Makefile
自动化变量
选项名
|
作用
|
$@
|
规则的目标文件名
|
$<
|
规则的第一个依赖文件名
|
$^
|
规则的所有依赖文件列表
|
模式规则
%.o:%.c
后缀规则
.c.o:
make
常用内嵌函数
函数调用
$(function arguments)
$(wildcard PATTERN)
当前目录下匹配模式的文件
例如:src=$(wildcard *.c)
$(patsubst PATTERN,REPLACEMENT,TEXT)
模式替换函数
例如:$(patsubst %.c,%.o,$src)
等价于$(src:.c=.o)
shell函数
执行shell命令
例如:$(shell ls –d */)
CC = gcc
CFLAGS =-Wall -g
BIN = main
SUBDIR = $(shell ls -d */)
ROOTSRC = $(wildcard *.c)
ROOTOBJ = $(ROOTSRC:%.c=%.o)
SUBSRC = $(shell find $(SUBDIR) -name '*.c')
SUBOBJ = $(SUBSRC:%.c=%.o)
$(BIN):$(ROOTOBJ) $(SUBOBJ)
$(CC) $(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ)
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(BIN) $(ROOTOBJ) $(SUBOBJ)