makefile notdir函数

notdir使用格式及返回结果

使用notdir函数处理多种后缀文件时未顺利转换

单一文件类型

假设path路径下有a.cpp b.cpp文件,后最均为cpp

DIR=path
SRC=$(DIR)/*.cpp
OBJ=$(notdir %.cpp %.o $(SRC))

得到的OBJ内容为a.o b.o

多种文件类型

假设path路径下有a.cpp b.cpp d.c文件,后缀有cpp和c

DIR=path
SRC=$(DIR)/*.cpp $(DIR)/*.c
OBJ=$(notdir %.cpp %.o $(SRC))

得到的OBJ内容为a.o b.o d.c,该结果用于编译时报错d.c没有规则

修改方案

DIR=path
SRC=$(DIR)/*.cpp $(DIR)/*.c
OBJ=$(notdir %.cpp %.o $(SRC))
OBJ:=$(notdir %.c %.o $(SRC))

最后必须用:=,得到的OBJ内容是a.o b.o d.o

编译正常

posted @ 2022-07-05 07:38  怦然心动如往昔  阅读(289)  评论(0编辑  收藏  举报