实例
BIN_NAME = ***//指定可执行文件名
CC=xxx/bin/arm-none-linux-gnueabi-gcc //编译器
CFLAGS=-D_GNU_SOURCE -//指定头文件路径及宏定义
LDDIR = -L/home/***/ //链接路径
LDFLAGS = //链接选项
SRCS = XX1.c \
XX2.c \
XX3.c
OBJS = $(SRCS:.c=.o) //替换文件后缀
default:$(BIN_NAME) //第一个目标即默认的目标
$(OBJS):%.o:%.c //静态模式定义多目标规则
$(CC) -c $(CFLAGS) $< -o $@ //参考自动化变量一节
$(BIN_NAME):$(OBJS)
$(CC) $(LDFLAGS) ${CFLAG} $(LDDIR) -o $@ $^ //参考自动化变量一节
.PHONY:clean //伪目标
clean:
-rm -rf $(OBJS) $(BIN_NAME)
自动化变量
符号 | 说明 |
---|---|
$@ | 表示目标的集合,就像一个数组,可以依次取出目标,并执于命令。 |
$^ | 表示依赖的集合 |
$< | 也是依赖的集合,可以依次取出 |
替换文件后缀
source := $(wildcard *.p4)
outfile := $(source:.p4=.json)
这里的原来的source 代表的所有p4 src 代码文件,被替换为.json 结尾的文件