求助:关于Makefile变量的问题
请看看下面的 Makefile 脚本代码段:
- define DOSUBDIR
- $(foreach V,$(SUBDIR_VARS),$(eval $(call RESET,$(V))))
- $(warning "$(1)" is $(1))
- SUBDIR := $(1)/
- $(warning "SUBDIR" is $(SUBDIR) )
- include $(1)/Makefile
- endef
- $(foreach D,$(FFLIBS),$(eval $(call DOSUBDIR,lib$(D))))
复制代码
问题1、$(warning) 为什么没有输出?
问题2、SUBDIR的值到了被包含进来的那个Makefile中为什么访问不到在 DOSUBDIR 中赋的值?我在被包含进来的那个Makefile中用$(info $(SUBDIR)) 结果输出的是空。Makefile 宏定义中的变量值是不是离开了宏就失效了?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
本帖最后由 wangfeifeiwc 于 2011-04-01 11:20 编辑
注意一下,include那一行。看一下看下一个makefile,是不是对你的问题有所帮助。
all:
@echo 0
include all_test
all_test:
@echo 1
你注释一下include行,看看其输出结果会有什么不一样。
我这边的情况是:
不注释include行:
1
0
注释include行:
0
1
具体make的工作机理也不是很清楚,gun的make读取makefile时,如果碰到include将暂停当前makefile的读取,但是这个makefile里面,include的子makefile(all_test)并不存在,所以它将把all_test当做一个目标。
楼上,但这并没有解释为什么warning 没有输出啊。