【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.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、变量的不同的赋值方式
- 简单赋值(:=)
- 递归赋值(=)
- 条件赋值(?=)
- 追加赋值(+=)
不同赋值的方式的意义是什么?
- 简单赋值(:=)
*程序设计语言中的通用的赋值方式
*只针对当前语句的变量有效
- 递归赋值(=)
*赋值操作可能影响多个其他变量
*所有与目标变量相关的其他变量都会受到影响
- 条件赋值(?=)
*如果变量没有定义,才会使用赋值符号的值定义变量
*如果变量已定义,则赋值无效
- 追加赋值(+=)
*原变量值之后加上一个新值
*原变量值与新值之间由空格隔开
示例程序:
# 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、总结
- makefile中支持变量的定义和使用
- makefile中支持4中不同的变量赋值方式
- 简单赋值(:=)
- 递归赋值(=)
- 条件赋值(?=)
- 追加赋值(+=)
想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
【Makefile由浅入深完全学习记录4】变量和不同的赋值方式相关推荐
- 【Makefile由浅入深完全学习记录1】认识make和makefile
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天开始学习项目又多了一项:Makefile由浅入深完全学习.之前做 ...
- 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上
抓住基础,学习更多技术,迎接挑战,加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 上一篇文章学习了makefile中的预定义变量的使用,今天来继续学习makefil ...
- 【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下
加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 继续上一篇文章关于变量的学习! 1.环境变量(全局变量) -makefile中能够直接使用环境变量的值 如果make ...
- 【Makefile由浅入深完全学习记录5】预定义变量的使用
今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我 ...
- 【Makefile由浅入深完全学习记录8】条件判断语句
加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C+ ...
- 【Makefile由浅入深完全学习记录3】伪目标的引入
只有不停的努力,才能看起来很轻松!!!加qq1126137994共同学习探讨更多技术!!! 1.思考: makefile中的目标究竟是什么? 在默认的情况下: make认为目标对应一个文件 make比 ...
- 【Makefile由浅入深完全学习记录2】初识 makefile 的结构
继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!! 1.回顾 makefile的意义: makefile用于定义源文件之间的 ...
- php初始化函数赋值,PHP变量的初始化以及赋值方式介绍
什么是变量 变量通俗的来说是一种容器.根据变量类型不同,容器的大小不一样,自然能存放的数据大小也不相同.在变量中存放的数据,我们称之为变量值. PHP 中的变量用一个美元符号后面跟变量名来表示.变量名 ...
- Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限
目录 1. 需要在spring-security.xml中配置验证过滤器,来取代spring-security.xml的默认过滤器 2. 配置securityMetadataSource,可以通过ur ...
最新文章
- PacBio sequence error correction amd assemble via pacBioToCA
- IJCAI 2018 基于主题信息的神经网络作文生成模型
- VS2015 Cordova实现WebView加载页面进度条(Android)
- 图像滤镜的一些加速和改进--笔记
- Spring-AOP 通过配置文件实现 前置增强
- LUA中相同签名函数覆盖
- 零基础学Python(第二十章 异常处理try)
- Nginx负载均衡状态之backup
- Invisor for Mac(媒体文件检查工具)v3.14免激活版
- flash as3笔记1
- html字颜色代码,css 字体颜色(css color)
- Android ProGuard 还原堆栈
- 分享Visual SVN Hook Script—— 允许客户端编辑SVN log message
- 免费收录网站搜索引擎登录口大全
- mysql 存微信表情_MySQL保存 emoji 表情(微信昵称表情)
- AlphaPose(RMPE)区域多人姿态估计理解
- Windows自动更新API(1)
- 江苏成人高考考前注意事项
- linux tao环境 安装_linux编译TAO的问题,求高手指导!!!!
- IOS5短信拦截怎么实现?
热门文章
- 第一百期:Java架构师:高并发下的流量控制
- 后来的我们王俊凯王源机器人_王俊凯杨紫到底是什么关系
- 怎么把整个网站的代码中的一个词去掉_【杭州南牛网络】网站优化的最新优化方法...
- 转录组差异表达分析工具Ballgown
- Git之第三方托管oschina
- 关于 ASP.NET MVC 中的视图生成
- sql数据库连接不上本地数据库的解决办法
- Silverlight4.0教程之WebBrowser控件(Silverlight内置HTML浏览器控件)
- PHP字符串函数大全
- 支付宝新版SDK-PC扫码支付-手机浏览器H5支付