make学习第三章——make的变量

赋值符号:

 

简单赋值(:=):只对当前语句有效,赋值改变的值不会传递

递归赋值(=):一个地方值改变,所有与这个变量相关的值都会变

条件赋值(?=):变量未定义,赋值有效,变量没有定义,赋值无效。

追加赋值(+=):在原变量后面加上一个新的值,用空格隔开

 

注意:makefile变量的值都属于文本数据,makefile里面用$(变量)来表示变量的值

 

代码实例:

 

# ex1

# x := foo

# y := $(x)b     //$(x)表示变量的值

# x := new       //运行之后的 y = foob ; x = new 

 

# ex2

# x = foo

# y = $(x)b

# x = new        //运行之后的 y = newb ; x = new

 

# ex3

# x := foo

# y := $(x)b

# x ?= new        //?=因为前面已经赋值,所以无效

//运行之后的 y = foob ; x = foo        

 

# ex4

# x := foo

# y := $(x)b

# x += new

//运行之后的 y = foob ; x = foo new

#代码如果需要运行,请去掉前面的#号注释

 

常用的预定义变量:

自动变量:

$@ : 当前规则中触发命令执行的目标

$^ : 当前规则中的所有依赖

$< : 当前规则中的第一条依赖

特殊变量:

$() : 括号里面大写基本上都是make自带的一些特殊变量,详细的可查make官网帮助文档

 

代码实例:

.PHONY : all first second third

all : first second third   

    @echo "\$$@ => $@"   #打印all

    @echo "$$^ => $^"    #打印first second third

    @echo "$$< => $<"    #打印first   

firtst:

second:

third:

 

--------

.PHONY : all out first second third test

all out :

    @echo "$(MAKE)"                #打印当前make解释器的文件名

    @echo "$(MAKECMDGOALS)"        #打印命令行中指定的目标名(make的命令行参数)

    @echo "$(MAKEFILE_LIST)"       #make所需要处理的makefile文件列表,当前make文件总是处于列表最后,文件名之间以空格分隔

first :

    @echo "first"    

second :

    @echo "second"    

third :

    @echo "third"   

test :

    @$(MAKE) first

    @$(MAKE) second

    @$(MAKE) third

 

-------

.PHONY : test1 test2

TDelphi := Delphi Tang

D.T.Software := D.T.

test1 :

    @echo "$(MAKE_VERSION)"   #当前make解释器的版本

    @echo "$(CURDIR)"         #当前make解释器的工作目录

    @echo "$(.VARIABLES)"     #所有已定义的变量(预定义变量和自定义变量)

test2 :

    @echo "$(RM)"

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值