Makefile怎么把多个目录下的.cpp文件编译到指定目录?

TianLanhe 2019-01-24 04:02:16
MakeFile如下:

# 获得所有CPP文件,如 a/b/c.pp d/e.cpp ./f.cpp
SourceFiles := $(shell find . -name *.cpp)

Objs := $(SourceFile: .cpp=.o)

# 要把.o文件生成到obj目录
ObjDir := obj

Objs := $(notdir $(Objs))
Objs := $(addprefix $(ObjDir)/, $(Objs)) # 目标文件:obj/a.o obj/e.o obj/f.o

.PHONY : all
all: $(Objs)


%.o : $(filter %.cpp,$(SourceFiles))
$(CXX) $(CXXFLAGS) -o $@ -c $<


问题来了,我尝试从目标文件映射会源文件路径,但是filter函数把 %.cpp 识别为一个模式了,$(filter %.cpp,$$(SourceFiles)) 实际上匹配到的是以.cpp结尾的文件,所以返回了$(SourceFiles),求问大神有没有办法达到我想要的目的呀,或者别的方法也行







...全文
378 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
才不是本人 2019-01-25
  • 打赏
  • 举报
回复
Makefile我不了解,但是你可以尝试写CMakeLists.txt 这个好用很多

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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