免费注册 查看新帖 |

Chinaunix

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

Makefile文件中的quiet设置(不回显执行的命令),没有看明白。帮忙看看。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-06 07:18 |只看该作者 |倒序浏览
本帖最后由 luanyp 于 2011-07-06 07:23 编辑

这个Makefile片段,谁能看懂? (QUIET_CC具体是什么含义,没看懂
QUIET_CC      = $(Q=@echo    '     CC       '$@  

%.o: %.c
        $(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $<

--由于makefile中的特殊符号会被转义为表情符号(不知道怎么取消表情),所以我还贴了个附件图。

makefile片段.JPG (5.52 KB, 下载次数: 37)

makefile片段.JPG

论坛徽章:
0
2 [报告]
发表于 2011-07-06 09:00 |只看该作者
你可以在发makefile 内容的时候使用高级功能“代码”,把makefile内容粘贴进去

论坛徽章:
0
3 [报告]
发表于 2011-07-07 09:12 |只看该作者
$(var:a=b)的意思是:把 var 变量中每一个词末尾出现的 a 替换为 b,譬如:

  1. STR0=a.o b.o c.o
  2. STR1=$(STR0:.o=.c)
复制代码
结果是 STR1=a.c b.c c.c

理解了上面的例子,再看
  1. $(Q:@=@echo    '     CC       '$@;)
复制代码
就是把 Q 变量中的每一个单词末尾的 @ 替换为 @echo '     CC       '$@; 这一长串(包括最后的分号),如果不出意外,在这段代码的之前应该有类似这样的语句:

  1. ifeq ($(VERBOSE),1)
  2.   Q =
  3. else
  4.   Q = @
  5. endif
复制代码
于是 make VERBOSE=1 将产生详细的输出,而 make 则产生 CC aaa.o 这样的输出。

论坛徽章:
0
4 [报告]
发表于 2011-07-09 08:06 |只看该作者
$(var:a=b)的意思是:把 var 变量中每一个词末尾出现的 a 替换为 b,譬如:结果是 STR1=a.c b.c c.c

理解 ...
vupiggy 发表于 2011-07-07 09:12



    能否给个小例子,多谢

论坛徽章:
0
5 [报告]
发表于 2011-07-09 11:06 |只看该作者
回复 2# jjinl


    不明白能不能讲的详细一点啊?

论坛徽章:
0
6 [报告]
发表于 2011-07-10 10:16 |只看该作者
能否给个小例子,多谢
unbutun 发表于 2011-07-09 01:06

例子已经在帖子里了,你还想要什么?重复一下,如果 STR0 的值是:a.o b.o c.o,表达式:$(STR0:.o=.c) 将所有的 .o 替换为 .c,于是产生 a.c b.c c.c 这样的字符串。还不清楚就看 GNU make 手册。

论坛徽章:
0
7 [报告]
发表于 2011-07-10 10:35 |只看该作者
回复 6# vupiggy


      原来@是管一整行的,我一直以为是到;就结束了。sorry
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP