急急求助:关于Makefile变量的问题

techres 2011-03-31 12:02:51
请看看下面的 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) 为什么没有输出任何内容,连“SUBDIR”都没有输出?
问题2、SUBDIR的值到了被包含进来的那个Makefile中为什么访问不到在 DOSUBDIR 中赋的值?我在被包含进来的那个Makefile中用$(info $(SUBDIR)) 结果输出的是空。Makefile 宏定义中的变量值是不是离开了宏就失效了?
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzw12315 2011-06-23
  • 打赏
  • 举报
回复
如果是内核的话,有打印输出等级的,不知道Makefile是不是也是这样的?
techres 2011-06-23
  • 打赏
  • 举报
回复
问题一直没解决,咋给分呀。
techres 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zmlovelx 的回复:]

$(1)为空 就不会有warning, 此时SUBDIR也为空,也不会有输出
另一个Makefile没有include 变量SUBDIR定义或可见的所在的文件,就不能访问SUBDIR
变量离开作用域,就无效了
[/Quote]
似乎不对吧:
1、即使$(1)为空,warning 也应该有输出,至少应该输出字符串 "$(1)" is 。SUBDIR同理。而且至少应该输出这条warning所在makefile的文件名和行号。

2、SUBDIR是在include $(1)/Makefile 之前定义赋值的,所以,即使被包含的那个Makefile没有include定义SUBDIR的这个文件,也应该能否访问这个SUBDIR吧?
3、Makefile中的变量也象c语言中一样存在作用域和可见性吗?
yuanzhenhai 2011-04-03
  • 打赏
  • 举报
回复
可惜我不懂
qihuanfengyun 2011-04-03
  • 打赏
  • 举报
回复
学习的makefile不是很深入...
帅得不敢出门 2011-04-03
  • 打赏
  • 举报
回复
$(1)为空 就不会有warning, 此时SUBDIR也为空,也不会有输出
另一个Makefile没有include 变量SUBDIR定义或可见的所在的文件,就不能访问SUBDIR
变量离开作用域,就无效了
techres 2011-03-31
  • 打赏
  • 举报
回复
顶,等回复。

23,120

社区成员

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

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