Makefile中变量的定义及使用
Makefile中变量的定义及使用
CC := gcc
TAGRET := hello.out$(TARGET): func.o main.o
$(CC) -o $(TARGET) func.O
上述Makefile中第一二行依次定义了变量CC、TARGET,第四五行引用了这两个变量,引用变量采用"$(变量名)"或者"${变量名}"的形式。
Makefile中的变量只能是字符串类型。 Makefile中变量有四种赋值方式: 1,简单赋值( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效 2,递归赋值( = )赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响 3,条件赋值( ?= )如果变量未定义,则使用符号中的值定义变量。如果该变量已经赋值,则该赋值语句无效。 4,追加赋值( += )原变量用空格隔开的方式追加一个新值
用例子来了解一下各个赋值的差别:
简单赋值
x := foo
y := $(x)b
x := new.PHONY : test
test:
@echo "y => $(y)"
@echo "x => $(x)"
输出值: x => new y => foob
递归赋值
x = foo
y = $(x)b
x = new.PHONY : test
test:
@echo "y => $(y)"
@echo "x => $(x)"
输出值: y = > newb x => new
条件赋值
x := foo
y := $(x)b
x ?= new.PHONY : test
test:
@echo "y => $(y)"
@echo "x => $(x)"
输出值: y => foob x = foo
追加赋值
x := foo
y := $(x)b
x += $(y).PHONY : test
test:
@echo "y => $(y)"
@echo "x => $(x)"
输出结果: y => foob x => foo foob
【Makefile中变量的定义及使用】递归赋值就是一个连锁反应,只要之前与该变量直接产生过关联的变量都会有影响。
条件赋值,第一次为变量赋值的时候推荐条件赋值。
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募
- 2020-04-07vue中Axios的封装和API接口的管理