Linux开发工具

--Makefile入门()

七、make常用内嵌函数

1、函数调用

$(functionarguments) #$引用的结果就是函数生成的结果



2Makefile下常用的函数

1$(wildcardPATTERN) #匹配当前目录下的文件,wildcard:通配符;pattern模式

例如:src=$(wildcard*.c)

2$(patsubstPATTERN,REPLACEMENT,TEXT) #模式替换函数,replacement 更换,复位

例如:$(patsubst%.c,%.o,$src) #等价于$(src:%.c=%.o)【推荐】

3shell函数

执行shell命令

例如:$(shellls –d */)



八、多级目录Makefile示例

CC = gcc

CFLAGS = -Wall -g

BIN = main

SUBDIR = $(shell ls -d */) #SUBDIR保存了子文件夹

ROOTSRC= $(wildcard *.c) #ROOTSRC保存了当前目录下的.c文件

ROOTOBJ= $(ROOTSRC:%.c=%.o) #ROOTOBJ保存了将ROOTSRC.c替换为.o文件之后的结果

SUBSRC = $(shell find $(SUBDIR) -name '*.c') #SUBSRC保存了所有子目录下的所有.c文件

SUBOBJ = $(SUBSRC:%.c=%.o) #SUBOBJ保存了将SUBSRC.c替换为.o文件之后的结果

$(BIN):$(ROOTOBJ)$(SUBOBJ)

$(CC)$(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ)

%.o:%.c

$(CC)$(CFLAGS) -c $< -o $@ #将所有的.c生成.o文件

clean:

rm-f $(BIN) $(ROOTOBJ) $(SUBOBJ)