【Makefile由浅入深完全学习记录4】变量和不同的赋值方式

今天来学习Makefile中变量的不同的赋值方式!努力的意义就是让贫穷不再限制你的想象!加qq共同学习交流1126137994

1、概念

  • makefile中支持程序设计中变量的概念
  • makefile中的变量只代表文本数据(字符串)
  • makefile中的变量名规则
    -变量名可以包含字符、数字、下划线
    -不能包含 : # = 与空格
    -变量名区分大小写

变量的定义和使用:
这里写图片描述

简单的例子(所依赖的文件func.c与main.c是第二篇文章里的点击链接查看:点击查看):


CC := g++
Target := hello.out

$(Target) all : func.o main.o
    $(CC) -o $(Target) func.o main.o

func.o : func.c
    $(CC) -o func.o -c func.c

main.o : main.c
    $(CC) -o main.o -c main.c

.PHONY : rebuild clean all

rebuild : clean all

clean:
    rm *.o $(Target)

输入make,程序运行正常!!!

2、变量的不同的赋值方式

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

不同赋值的方式的意义是什么?

  1. 简单赋值(:=)
    *程序设计语言中的通用的赋值方式
    *只针对当前语句的变量有效
    这里写图片描述
  2. 递归赋值(=)
    *赋值操作可能影响多个其他变量
    *所有与目标变量相关的其他变量都会受到影响
    这里写图片描述
  3. 条件赋值(?=)
    *如果变量没有定义,才会使用赋值符号的值定义变量
    *如果变量已定义,则赋值无效
    这里写图片描述
  4. 追加赋值(+=)
    *原变量值之后加上一个新值
    *原变量值与新值之间由空格隔开
    这里写图片描述

示例程序:

# ex1
# x := foo
# y := $(x)b
# x := new

# ex2
# x = foo
# y = $(x)b
# x = new

# a = $(b)
# b = $(c)
# c = hello-makefile

# ex3
# x := foo
# y := $(x)b
# x ?= new

# ex4
# x := foo
# y := $(x)b
# x += new

.PHONY : test

test :
    @echo "x => $(x)"
    @echo "y => $(y)"
    @echo "a => $(a)"
    @echo "b => $(b)"
    @echo "c => $(c)"

以上程序,分别运行每一个注释部分,得到的运行结果分别如下:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

3、总结

  1. makefile中支持变量的定义和使用
  2. makefile中支持4中不同的变量赋值方式
    • 简单赋值(:=)
    • 递归赋值(=)
    • 条件赋值(?=)
    • 追加赋值(+=)

想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值