makefile and make tips

wildcard,扩展通配符

https://blog.csdn.net/hktkfly6/article/details/25644139

SRC = $(wildcard *.c)

等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样: 

SRC = $(wildcard *.c inc/*.c ABC/*.c BCD/*.c) 

patsubst,替换通配符

一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c文件列表。复杂一些用法;可以使用

“$(patsubst %.c,%.o,$(wildcard *.c))”,

首先使用“wildcard”函数获取工作目录下的.c文件列表;之后将列表中所有文件名的后缀.c替换为.o。这样我们就可以得到在当前目录可生成的.o文件列表。

 

建立一个简单的Makefile
src=$(wildcard *.c ./sub/*.c)
dir=$(notdir $(src))
obj=$(patsubst %.c,%.o,$(dir) ) 

all:
 @echo $(src)
 @echo $(dir)
 @echo $(obj)
 @echo "end"

 

posted on 2020-05-21 22:04  yanhc  阅读(232)  评论(0编辑  收藏  举报

导航