Ⅳ变量和不同的赋值方式
  • makefile中支持程序设计语言中变量的概念

  • makefile中的变量只代表文本数据( 字符串 )

  • makefile中的变量名规则

-变量名可以包含字符,数字,下划线.
-不能包含":" , "#" ,"=" 或 " "
-变量名大小写敏感

变量的定义和使用

CC := gcc
TARGET := hello.out

$(TARGET) : func.o main.o
$(CC) -o $(TARGET) fun.o main.o

##开始的两行表示 变量的定义##
##使用的时候 需要加上 $() ,变量名填入其中##

makefile中变量的赋值方式

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

简单赋值( := )

  • 程序设计语言中的通用的赋值方法
  • 只针对当前语句的变量有效
x := foo
y := $(x)b
x := new

.PHONY: test
test:
@echo "x=> $(x)"
@echo "y=> $(y)"

输出结果:

x=> foo
y=> foob

递归赋值( = )

  • 赋值操作可能影响多个其他变量.
  • 所有与目标变量相关的其他变量都将受到其影响.
x := foo
y := $(x)b
x = new

.PHONY : test
test:
@echo "x=> $(x)"
@echo "y=> $(y)"

输出结果:

x=> new
y=> newb

条件赋值( ?= )

  • 如果变量未定义,使用赋值符号中的值定义变量
  • 如果变量已经定义,赋值无效
x := foo
y := $(x)b
x ?= new
c ?= WHL

.PHONY : test
test:
@echo "x=> $(x)"
@echo "y=> $(y)"
@echo "c=> $(c)"

输出结果:

x=> foo
y=> foob
c=> WHL

追加赋值( += )

  • 原变量之后加上一个新值
  • 原变量值与新值之间有空格隔开
x := foo
y := $(x)b
x += y

.PHONY : test
test:
@echo "x=> $(x)"
@echo "y=> $(y)"

输出结果:

x=> foo foob
y=> foob
Author: 浩然天成
Link: http://aronzhc.github.io/2021/04/09/Ⅳ变量和不同的赋值方式/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.