makefile变量的四种赋值方式

makefile中的变量代表的是文本数据,类似字符串。
makefile的变量有如下四种赋值方式

  • 简单赋值 ( := )
  • 递归赋值 ( = )
  • 条件赋值 ( ?= )
  • 追加赋值 ( += )

下面分别说明每种赋值方式,大家根据输出结果的不同就可以看出他们之间的区别。

简单赋值

赋值的左侧是立即变量,定义时的赋值立即有效。

boy := I am a boy
girl := $(boy)?
boy := Maybe

qa :
    @echo "girl : $(girl)"
    @echo "boy : $(boy)"

.PHONY : qa

输出结果是

girl : I am a boy?
boy : Maybe

递归赋值

赋值的左侧是延时变量,只有被使用时才展开定义。

boy = I am a boy
girl = $(boy)?
boy = Maybe

qa :
    @echo "girl : $(girl)"
    @echo "boy : $(boy)"

.PHONY : qa

输出结果是

girl : Maybe?
boy : Maybe

条件赋值

赋值的左侧是条件变量,当变量为空时才赋值。

boy := I am a boy
girl := $(boy)?
boy ?= Maybe

qa :
    @echo "girl : $(girl)"
    @echo "boy : $(boy)"

.PHONY : qa

输出结果是

girl : I am a boy?
boy : I am a boy

追加赋值

原变量值之后追加一个新的值,中间用空格隔开。

boy := I am a boy
girl := $(boy)?
boy += Maybe

qa :
    @echo "girl : $(girl)"
    @echo "boy : $(boy)"

.PHONY : qa

输出结果是

girl : I am a boy?
boy : I am a boy Maybe
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容