免费注册 查看新帖 |

Chinaunix

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

Linux的MakeFile自动变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-28 21:09 |只看该作者 |倒序浏览

$@
表示规则的目标文件名。如果目标是一个文档文件(Linux中,一般称.a文件为
文档文件,也称为静态库文件) ,那么它代表这个文档的文件名。在多目标模式
规则中,它代表的是哪个触发规则被执行的目标文件名。
$^
规则的所有依赖文件列表,使用空格分隔。如果目标是静态库文件,它所代表的
只能是所有库成员(.o文件)名。一个文件可重复的出现在目标的依赖中,变量
“$^”只记录它的一次引用情况。就是说变量“$^”会去掉重复的依赖文件。
$<
规则的第一个依赖文件名。如果是一个目标文件使用隐含规则来重建,则它代表
由隐含规则加入的第一个依赖文件。
$?
所有比目标文件更新的依赖文件列表,空格分割。如果目标是静态库文件名,代
表的是库成员(.o文件)。
$%
当规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则
的目标是“foo.a(bar.o)”,那么,“$%” 的值就为 “bar.o”,“$@”的值为“foo.a”。
如果目标不是静态库文件,其值为空。



模式规则类似于普通规则。只是在模式规则中,目标名中需要包含有模式字符“%”
(一个),包含有模式字符“%”的目标被用来匹配一个文件名,“%”可以匹配任何非
空字符串。
在模式规则中,目标文件是一个带有模式字符“%”的文件,使用模式来匹配目标
文件。文件名中的模式字符“%”可以匹配任何非空字符串,除模式字符以外的部分要
求一致。例如: “%.c”匹配所有以“.c”结尾的文件(匹配的文件名长度最少为3个字
母),
首先看编译.c文件到.o文件的隐含模式规则:

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

此规则描述了一个.o文件如何由对应的.c文件创建。规则的命令行中使用了自动化变量
“$<”和“$@” ,其中自动化变量“$<”代表规则的依赖, “$@”代表规则的目标。
此规则在执行时,命令行中的自动化变量将根据实际的目标和依赖文件取对应值。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/53892/showart_1019186.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP