Makefile常用的变量

1、自动变量

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 变量                            说明  
  2. $@                              规则的目标所对应的文件名  
  3. $<                              规则中的第一个相关文件名  
  4. $^                              规则中所有相关文件的列表,以空格分割  
  5. $?                              规则中日期新于目标的所有相关文件的列表,以空格分割  
  6. $(@D)                           目标文件的目录部分  
  7. $(@F)                           目标文件的文件名部分  


2、预定义变量

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. 变量                             说明  
  2. AR                               归档维护程序,默认值=ar  
  3. CPP                              c预处理程序,默认值=cpp  
  4. CC                               c编译程序,默认值=cc  
  5. AS                               汇编程序,默认值=as  
  6. RM                               文件删除程序,默认值=rm -f  
  7.   
  8. ARFLAGS                          传给归档维护程序的标志,默认值=rv  
  9. CPPFLAGS                         传给c预处理程序的标志,无默认值  
  10. CFLAGS                           传给c编译程序的标志,无默认值  
  11. ASFLAGS                          传给汇编程序的标志,无默认值  
  12. LDFLAGS                          传给链接程序(ld)的标志,无默认值  




今天练习了一个小实验:
[root@feifei p3.1]# ls
Makefile  p3.1.c  p3.1.o  p3.1.pre.c  p3.1.s
[root@feifei p3.1]# vi Makefile 
#CC=gcc
#CFLAGS=-o
p3.1 : p3.1.c
        $(CC) $(CFLAGS) $@ p3.1.c
        #$(CC) -o $@ p3.1.c
        echo $(CFLAGS)
实验的目的是:
一.验证这个CFLAGS到底有没有预定义的值,并且验证这个CC的预定义值
过程如下:
[root@feifei p3.1]# make
cc  p3.1 p3.1.c  (这个地方说明了CFLAGS没有起作用,忽略了它。。。。)
cc: p3.1:没有那个文件或目录
make: *** [p3.1] 错误 1
从上面的结果说明:这个CC变量是是make的预订的值(即CC=cc)(解释,这个并不是环境变量,如下解释)
[root@feifei p3.1]# echo $CC
[root@feifei p3.1]# 
说明系统并没有CC这个环境变量,我的认为是这个验证了书上写的是makefile的预定义变量,至于在哪定义的,却不知道
而对于CFLAGS这个变量无法验证是不是makefile的预定义变量,并且一定不是环境变量:如下
[root@feifei p3.1]# echo $CFLAGS
[root@feifei p3.1]# 
这说明了一个问题,对于makfile中引用的变量,如果不是makefile预定义的变量,也不只是环境变量的话,那么这个变量就以空格来表示(是不是空格,我也不知道,但至少是空的,就是没有,从第一次make的执行过程可以看出)
二.我试着对CFLAGS设置为环境变量,然后看看这个make可以执行下去不,如下:
[root@feifei p3.1]# export CFLAGS=-o
[root@feifei p3.1]# echo $CFLAGS
-o
说明已经设置好了,下面验证:
[root@feifei p3.1]# make
cc -o p3.1 p3.1.c
#cc -o p3.1 p3.1.c
echo -o
-o
说明验证成功,
总结如下:makefile会使用环境变量的值来进行编译。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值