Makefile相关函数

来源:互联网 发布:mac whirl亚洲人试色 编辑:程序博客网 时间:2024/06/10 01:04

$(wildcard *.c)

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

$(addsuffix SUFFIX,NAMES)

给NAMES加上后缀SUFFIX

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

SRCDIR := src1 src2 src3SRCS := $(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"
原创粉丝点击