makefile自动变量

/***********************************************/
=  递归展开变量
:= 立即展开变量
---------------------------------------------------
$@  表示一个规则中的目标文件(*.o文件)
      file1.o file2.o:head.h
       cp $@ /backup
    相当于   file1.o:file1.c head.h
   cp $@ /backup   
   gcc -c file1.c -o file1.o
  file2.o:file2.c head.h
   cp $@ /backup
   gcc -c file2.c -o file2.o
--------------------------------------------------
$%  当规则的目标文件是一个静态库文件时,$%代表静态库中的一个成员名。
 如某条规则 的目标是 foo.a(bar.o), 则$%的值是bar.o,而$@的值是foo.a
----------------------------------------------------
$<  规则中的第一个依赖文件名。如果使用了隐含规则,那么&<的值为由隐含规则引入的第一个依赖文件名。
 file1.o file2.o:head.h
  cp $@ /backup
 当file1.o过时时,该规则相当于:
 file1.o:file1.c head.h
  cp $@ /backup
  gcc -o file1.o -c file1.c
----------------------------------------------------
$>  与$%一样,只适用于库文件名,它的值是库名。
----------------------------------------------------
$?  所有比目标文件新的依赖文件列表,以空格分开。如果目标是静态库文件名,代表的是库成员(.o文件)
-----------------------------------------------------
$^  规则的所用依赖文件列表,使用空格分开;如一个文件在依赖文件中出现多次,只列出一次;
-----------------------------------------------------
$+  规则的所用依赖文件列表,使用空格分开;如一个文件在依赖文件中出现多次,列出多次;
-----------------------------------------------------
$*  目标文件去掉后缀后的名称。如某个规则的目标文件是 file.o,则 $* 是 file
 file1.o file2.l:head.h
  gcc -c $* -o $@
-----------------------------------------------------
以上自动变量只适用于命令中,不能用在目标文件和依赖文件中,如想用在目标文件和依赖文件中,则前再加一个$
如:
 file1.o file2.o:$$.c head.h
  gcc -o $*.o -c $@
 运行make,解释含用隐含规则的mikefile时,当处理的目标文件为file1.o时,$$*和$*代表file1;
 当处理的目标文件是file2.o时,$$*和$*代表file2
 相当于:
  file1.o:$$*.c head.h
   gcc -c $*.c -o $@
  file2.o:$$* head.h
   gcc -c $*.c -o $@
  
 或者: 
  file1.o:file1.c head.h
   gcc -c file1.c -o file2.o
  file2.o:file2.c head.h
   gcc -c file2.c -o file2.o
------------------------------------------------------
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值