Makefile 中的 "="、":="、"?="、"+="

本文深入解析Makefile中变量的四种赋值方式:=、:=、?=、+=的区别及应用实例,通过具体示例展示如何根据不同场景选择合适的赋值方式。

Makefile 中的 "="、":="、"?="、"+="

--------
= 最基本的赋值
:= 覆盖之前的值
?= 如果没有被赋值过就赋予等号后面的值
+= 添加等号后面的值
-------

eg:
1、Makefile文件内容:
cat Makefile.equal

ifdef DEFINE_VER
VER = "Hello World!"
endif

ifeq ($(OPT),define)
VER ?= "Hello World! First!"
endif

ifeq ($(OPT),add)
VER += "Kelly!"
endif

ifeq ($(OPT),recover)
VER := "Hello World! Again!"
endif

all:
    @echo $(VER)

2、使用脚本来运行Makefile,
cat execute.sh

#!/bin/sh

set -v  /* 设置运行时显示相应shell命令 */

make -f Makefile.equal DEFINE_VER=true
make -f Makefile.equal DEFINE_VER=true OPT=define
make -f Makefile.equal DEFINE_VER=true OPT=add
make -f Makefile.equal DEFINE_VER=true OPT=recover
make -f Makefile.equal 
make -f Makefile.equal OPT=define
make -f Makefile.equal OPT=add
make -f Makefile.equal OPT=recover

3、运行脚本文件,
./execute.sh

make -f Makefile.equal DEFINE_VER=true
Hello World!

make -f Makefile.equal DEFINE_VER=true OPT=define
Hello World!

make -f Makefile.equal DEFINE_VER=true OPT=add
Hello World! Kelly!

make -f Makefile.equal DEFINE_VER=true OPT=recover
Hello World! Again!

make -f Makefile.equal

make -f Makefile.equal OPT=define
Hello World! First!

make -f Makefile.equal OPT=add
Kelly!

make -f Makefile.equal OPT=recover
Hello World! Again!

--------------------------
"=" : make将整个Makefile 展开后,再决定变量的值。
eg:

x = foo
y = $(x) bar
x = xyz

最终 y 的值 xyz bar 。
--------------------------
":=" 变量的值决定于它在Makefile中的位置,而不是整个Makefile展开后的最终值。
eg:

x := foo
y := $(x) bar
x := xyz

最终y 的值 foo bar 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值