免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3061 | 回复: 11
打印 上一主题 下一主题

请问一个带有$$的问题:) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 10:23 |只看该作者 |倒序浏览
今天学习makefile时,碰到了一个问题,如下:

depend dep:
        @for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir .depend ; done
-------------------------------------------------------------------------------------
意思应该是这样的:如果make depend,那么就会依次对子目录集(在SUBDIRS变量)中的每一个目录下的Makefile中的.depend目标进行make。
但是,dir作为变量,在其前面加上$$是什么意思呢?

谢谢:)

论坛徽章:
0
2 [报告]
发表于 2008-07-29 10:41 |只看该作者
原帖由 shyshine 于 2008-7-29 10:23 发表
今天学习makefile时,碰到了一个问题,如下:

depend dep:
        @for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir .depend ; done
-------------------------------------------------------------------------- ...


dir是shell的变量,不是makefile的变量。

论坛徽章:
0
3 [报告]
发表于 2008-07-29 10:54 |只看该作者
原帖由 雨丝风片 于 2008-7-29 10:41 发表


dir是shell的变量,不是makefile的变量。

dir的确是一个shell变量,难道在makefile中使用时就必须使用 $$dir 这样的方式吗?我还真不知道哩~

论坛徽章:
0
4 [报告]
发表于 2008-07-29 11:00 |只看该作者
原帖由 雨丝风片 于 2008-7-29 10:41 发表


dir是shell的变量,不是makefile的变量。

如果是这样的话,那下文(同一个makefile)中的UNDEF_SYM又如何解释呢?
很明显,它是一个makefile的变量,但它前面也使用了$$,所以我又不懂了
------------------------------------------------------------------------------------------
u-boot:        depend $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)       
        UNDEF_SYM=`$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
        $(LD) $(LDFLAGS) $$UNDEF_SYM $(OBJS) \
        --start-group $(LIBS) $(PLATFORM_LIBS) --end-group \       
        -Map u-boot.map -o u-boot                                                
        echo $(UNDEF_SYM)

论坛徽章:
0
5 [报告]
发表于 2008-07-29 11:02 |只看该作者
原帖由 雨丝风片 于 2008-7-29 10:41 发表


dir是shell的变量,不是makefile的变量。

版主的头像就是那本makefile的书的封面吧?

论坛徽章:
0
6 [报告]
发表于 2008-07-29 11:02 |只看该作者
原帖由 shyshine 于 2008-7-29 11:00 发表

如果是这样的话,那下文(同一个makefile)中的UNDEF_SYM又如何解释呢?
很明显,它是一个makefile的变量,但它前面也使用了$$,所以我又不懂了
----------------------------------------------------- ...

我错了,这个UNDEF_SYM也应该是SHELL的变量!!
我懂了,谢谢阿

论坛徽章:
0
7 [报告]
发表于 2008-07-29 11:08 |只看该作者
原帖由 shyshine 于 2008-7-29 11:02 发表

我错了,这个UNDEF_SYM也应该是SHELL的变量!!
我懂了,谢谢阿

我又觉得不懂了。
很明显刚才那个UNDEF_SYM的例子中的最后一行,即:@echo $(UNDEF_SYM)。
这里为什么又只用一个$呢??

论坛徽章:
0
8 [报告]
发表于 2008-07-29 11:46 |只看该作者
UNDEF_SYM是Makefile本身的变量
在传给shell之前就已经被展开了
echo $(UNDEF_SYM)
相当于执行
echo `$(OBJDUMP) -x $(LIBS) |sed  -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`

论坛徽章:
0
9 [报告]
发表于 2008-07-29 13:24 |只看该作者
原帖由 shyshine 于 2008-7-29 11:08 发表

我又觉得不懂了。
很明显刚才那个UNDEF_SYM的例子中的最后一行,即:@echo $(UNDEF_SYM)。
这里为什么又只用一个$呢??


站在shell的角度,替shell想想。

论坛徽章:
0
10 [报告]
发表于 2008-07-29 13:25 |只看该作者
原帖由 77h2_eleven 于 2008-7-29 11:02 发表

版主的头像就是那本makefile的书的封面吧?


不是。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP