今天来学习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.ofunc.o : func.c$(CC) -o func.o -c func.cmain.o : main.c$(CC) -o main.o -c main.c.PHONY : rebuild clean allrebuild : clean allclean: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 : testtest :@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语言,数据结构等技术问题。

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

  1. 【Makefile由浅入深完全学习记录1】认识make和makefile

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天开始学习项目又多了一项:Makefile由浅入深完全学习.之前做 ...

  2. 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上

    抓住基础,学习更多技术,迎接挑战,加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 上一篇文章学习了makefile中的预定义变量的使用,今天来继续学习makefil ...

  3. 【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下

    加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 继续上一篇文章关于变量的学习! 1.环境变量(全局变量) -makefile中能够直接使用环境变量的值 如果make ...

  4. 【Makefile由浅入深完全学习记录5】预定义变量的使用

    今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我 ...

  5. 【Makefile由浅入深完全学习记录8】条件判断语句

    加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C+ ...

  6. 【Makefile由浅入深完全学习记录3】伪目标的引入

    只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...

  7. 【Makefile由浅入深完全学习记录2】初识 makefile 的结构

    继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...

  8. php初始化函数赋值,PHP变量的初始化以及赋值方式介绍

    什么是变量 变量通俗的来说是一种容器.根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同.在变量中存放的数据,我们称之为变量值. PHP 中的变量用一个美元符号后面跟变量名来表示.变量名 ...

  9. Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限

    目录 1. 需要在spring-security.xml中配置验证过滤器,来取代spring-security.xml的默认过滤器 2. 配置securityMetadataSource,可以通过ur ...

最新文章

  1. PacBio sequence error correction amd assemble via pacBioToCA
  2. IJCAI 2018 基于主题信息的神经网络作文生成模型
  3. VS2015 Cordova实现WebView加载页面进度条(Android)
  4. 图像滤镜的一些加速和改进--笔记
  5. Spring-AOP 通过配置文件实现 前置增强
  6. LUA中相同签名函数覆盖
  7. 零基础学Python(第二十章 异常处理try)
  8. Nginx负载均衡状态之backup
  9. Invisor for Mac(媒体文件检查工具)v3.14免激活版
  10. flash as3笔记1
  11. html字颜色代码,css 字体颜色(css color)
  12. Android ProGuard 还原堆栈
  13. 分享Visual SVN Hook Script—— 允许客户端编辑SVN log message
  14. 免费收录网站搜索引擎登录口大全
  15. mysql 存微信表情_MySQL保存 emoji 表情(微信昵称表情)
  16. AlphaPose(RMPE)区域多人姿态估计理解
  17. Windows自动更新API(1)
  18. 江苏成人高考考前注意事项
  19. linux tao环境 安装_linux编译TAO的问题,求高手指导!!!!
  20. IOS5短信拦截怎么实现?

热门文章

  1. 第一百期:Java架构师:高并发下的流量控制
  2. 后来的我们王俊凯王源机器人_王俊凯杨紫到底是什么关系
  3. 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
  4. 转录组差异表达分析工具Ballgown
  5. Git之第三方托管oschina
  6. 关于 ASP.NET MVC 中的视图生成
  7. sql数据库连接不上本地数据库的解决办法
  8. Silverlight4.0教程之WebBrowser控件(Silverlight内置HTML浏览器控件)
  9. PHP字符串函数大全
  10. 支付宝新版SDK-PC扫码支付-手机浏览器H5支付