Linux开发工具
--Makefile入门(下)
七、make常用内嵌函数
1、函数调用
$(functionarguments) #$引用的结果就是函数生成的结果
2、Makefile下常用的函数
1)$(wildcardPATTERN) #匹配当前目录下的文件,wildcard:通配符;pattern模式
例如:src=$(wildcard*.c)
2)$(patsubstPATTERN,REPLACEMENT,TEXT) #模式替换函数,replacement 更换,复位
例如:$(patsubst%.c,%.o,$src) #等价于$(src:%.c=%.o)【推荐】
3)shell函数
执行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)
转载于:https://blog.51cto.com/zhujifang/1380170