makefile的filter的匹配问题

zilaishuichina 2016-12-09 02:29:51
说明 :
项目代码都在Src下面,Src当前目录下面有个abc.cpp
Src下面有个A目录,A目录下面有个abc.cpp
Src下面有个B目录,B目录下面有个abc.cpp
(主要就是不同路径下面存在同名cpp文件)

我希望实现的就是:
./Src下面的abc.cpp生成的abc.o 还放在./Src下
./Src/A下面的abc.cpp生成的abc.o 还放在./Src/A下
./Src/B下面的abc.cpp生成的abc.o 还放在./Src/B下

于是makefile我是类似下面这样写的

DIR = ./Src
DIR_A = $(DIR)/A
DIR_B = $(DIR)/B

OBJS = $(DIR)/abc.o $(DIR_A)/abc.o $(DIR_B)/abc.o

#...省略

$(filter $(DIR)/%.o, $(OBJS)): $(DIR)/%.o: $(DIR)/%.cpp
g++ -c $< -o $@

$(filter $(DIR_A)/%.o, $(OBJS)): $(DIR_A)/%.o: $(DIR_A)/%.cpp
g++ -c $< -o $@

$(filter $(DIR_B)/%.o, $(OBJS)): $(DIR_B)/%.o: $(DIR_B)/%.cpp
g++ -c $< -o $@

这样写虽然最终也编译出结果了,但是报了警告,就是说./Src/A/abc.o的生成规则出现重合,./Src/B/abc.o的生成规则出现重合


然后我就输出了 $(filter $(DIR)/%.o, $(OBJS)) 发现它过滤的不仅仅是当前目录下面的o文件,还包括子目录下面的o文件

现在我想仅仅过滤指定目录下面的o文件,但不包括其子目录的,该如何实现


...全文
253 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧