$(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"
3423

被折叠的 条评论
为什么被折叠?



