【开发工具】makefile之override的作用

1. makefile中 override 的一二事:

新建Makefile,内容如:

EXTRA_CFLAGS := -fPIC -O3
EXTRA_CFLAGS += -DTEST
all: clean
.PHONY:clean
clean:
	@echo $(EXTRA_CFLAGS)
1.1 Makefile中不使用override,命令行中的宏定义是老大、Makefile中的宏定义在老大面前啥都不是

见例子验证
>make
输出 -fPIC -O3 -DTEST

>make EXTRA_CFLAGS=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS:=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS?=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS+=AAAAAA
输出 AAAAAA

1.2 命令行中的宏定义还是老大,Makefile里加了override的那处需要根据是“:=”、“=”,“?=”,“+=”,属性,要么收老大做小弟(+=),要么直接干掉老大(:= 、=),要么主动让位(?=),其他地方在老大面前还是啥都不是

修改Makefile,即其中加override

1.2.1 注意 override后面使用的是 += ,这样可以把老大收做小弟。***
EXTRA_CFLAGS := -fPIC -O3
override EXTRA_CFLAGS += -DTEST
all: clean
.PHONY:clean
clean:
	@echo $(EXTRA_CFLAGS)

见例子验证
>make
输出 -fPIC -O3 -DTEST

>make EXTRA_CFLAGS=AAAAAA
输出 AAAAAA -DTEST

>make EXTRA_CFLAGS:=AAAAAA
输出 AAAAAA -DTEST

>make EXTRA_CFLAGS?=AAAAAA
输出 AAAAAA -DTEST

>make EXTRA_CFLAGS+=AAAAAA
输出 AAAAAA -DTEST

1.2.2 注意 override后面使用的是 = ,这样可以把老大给干掉了***
EXTRA_CFLAGS := -fPIC -O3
override EXTRA_CFLAGS = -DTEST
all: clean
.PHONY:clean
clean:
	@echo $(EXTRA_CFLAGS)

见例子验证
>make
输出 -DTEST

>make EXTRA_CFLAGS=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS:=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS?=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS+=AAAAAA
输出 -DTEST

1.2.3 注意 override后面使用的是 := ,这样也可以把老大给干掉了***
EXTRA_CFLAGS := -fPIC -O3
override EXTRA_CFLAGS := -DTEST
all: clean
.PHONY:clean
clean:
	@echo $(EXTRA_CFLAGS)

见例子验证
>make
输出 -DTEST

>make EXTRA_CFLAGS=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS:=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS?=AAAAAA
输出 -DTEST

>make EXTRA_CFLAGS+=AAAAAA
输出 -DTEST

1.2.4 注意 override后面使用的是 ?= ,这样主动让位***
EXTRA_CFLAGS := -fPIC -O3
override EXTRA_CFLAGS ?= -DTEST
all: clean
.PHONY:clean
clean:
	@echo $(EXTRA_CFLAGS)

见例子验证
>make
输出 -fPIC -O3

>make EXTRA_CFLAGS=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS:=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS?=AAAAAA
输出 AAAAAA

>make EXTRA_CFLAGS+=AAAAAA
输出 AAAAAA

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值