makefile子目录中新生成的O文件为何找不到?

搬板砖 搬板砖 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
根目录下有二个以上文件夹,每个文件夹下都有独立的makefile文件能够生成.o文件,在根目录下的makefile需要调用子目录下的makefile,然后将子目录下生成的所有.o合成一个大的.o文件。
目录:
Makefile
目录A
1.c
2.c
makefile
目录B
3.c
4.c
makefile


子目录下的makefile就不说了,根目录下makefile:

MODULES := 目录A 目录B
all:
for module in $(MODULES);do if make -w -C $$module all; then echo "$$module build success";else echo "$$module build error";exit 1; break;fi; done

#在执行上面的动作首次生成子目录的.o文件时在这里打印是空的,而在子目录己经生成.o后,再次执行该makefile
#这里有打印,为什么呢?
echo $(shell find $(MODULES) -name '*.o')

##在执行上面的动作首次生成子目录的.o文件时有打印
find $(MODULES) -name '*.o'

#用wildcard在首次生成子目录的.o文件时,这里打印也是空的
echo $(wildcard */*.o)

#由于首次生成子目录的.o文件时find为空,因此这里报错。 这里应该怎么写?
$(LD) -r -o lib根.o $(shell find $(MODULES) -name '*.o')


...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
搬板砖
Linux/Unix社区 23,224 成员 74,535 内容