Makefile相关函数

$(wildcard *.c)

获取该目录下所有的.c文件

$(addsuffix SUFFIX,NAMES)

给NAMES加上后缀SUFFIX

PS:结合以上两个函数可以实现获取指定目录下的所有指定类型文件

SRCDIR := src1 src2 src3
SRCS := $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))  #获取src1 src2 src3 目录下所有的.cpp文件
#相当于 SRCS := $(wildcard src1/*.cpp src2/*.cpp src3/*.cpp) 

$(subst from,to,texts)

把字串texts中的from字符串替换成to。

$(patsubst %.c,%.o,texts)

把字符串texts中的.c替换成.o [其中,%代表任意长度的字符串]

OBJS := $(patsubst %.cpp,%.o,$(SRCS)) #将SRCS中文件的".cpp"转化为".o"

[例子]假设当前目录下存在文件夹build(用来保存编译出来的.o文件),src(用来放.cpp源文件),include(用来放.h头文件)三个文件夹,

    SRCDIR := src
    SRCS := $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))    
    OBJS := $(patsubst %.cpp,%.o,$(subst src,build,$(SRCS)))

则SRCS为src目录下所有.cpp文件,OBJS为将编译成build下的与.cpp同名的.o文件,如src/a.cpp将转化为build/a.
那么编译命令可以为:

    $(OBJS) : $(SRCS)
    g++ -o $@ -c $(patsubst %.o,%.cpp, $(subst build,src,$@)) $(INCLUDE_PATH)

其中,@.o(patsubst %.o,%.cpp, (substbuild,src,@))为每一个.o所对应的.cpp,如src/a.cpp将转化为build/a.o

$(strip texts)

把texts前后的空格去掉

$(strip a b  c) -> "abc"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值