Makefile文件(六)_使用条件判断
参考:http://blog.csdn.net/liang13664759/article/details/1771246/
使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支。条件表达式可以使比较变量的值,或是比较变量和常量的值。
一、示例
判断$(CC)变量是否“GCC”,如果是的话,则用GNU函数编译目标。
libs_for_gcc=lgnu
normal_libs=
foo:$(objects)
ifeq($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
上面的示例中,目标“foo”可以根据变量“$(CC)”值来选取不同的函数库来编译程序
关键字:ifeq、else和endif。ifeq表示条件语句的开始,并指定一个条件表达式,表达式含有两个参数以逗号隔开,表达式以圆括号括起。else表示条件表达式位假的情况。endif表示一个条件语句的结束,任何一个条件表达式都应该以endif结束。
上例还可以写成:
libs_for_gcc = -lgnu
normal_libs=
ifeq($(CC),gcc)
libs = $(libs_for_gcc)
else
libs=$(normal_libs)
endif
foo: $(objects)
$(CC) -o foo $(objects) $(libs)
二、语法
条件表达式语法:
<conditional-directive>
<text-if-true>
endif
以及:
<conditional-directive>
<text-if-true>
else
<text-if-false>
endif
其中,<conditional-directive>表示条件关键字,如“ifeq”,这个关键字有四个
①、ifeq(<arg1>,<arg2>) / ifeq'<arg1>' '<arg2>' / ifeq"<arg1>" "<.arg2>" / ifeq "<arg1>" '<agr2>' / ifeq '<arg1>' "<arg2>"
表示比较参数“arg1”和“arg2”的值是否相同,当然参数中还可以使用make的函数,如:
ifeq ($(strip $(foo)),)
<text-if-empty>
endif
实例中使用了“strip”函数,如果函数返回空,那么<text-if-empty>生效
②ifneq(<arg1>, <arg2>) / ……
比较参数“argu1”和“arg2”是否相同,如果不同则为真。
③、ifdef <variable-name>
如果变量<variable-name>的值非空,那表达式为真,否则表达式为假。当然,<variable-name>同样可以使一个函数的返回值。ifdef只是测试一个变量是否有值,并不会把变量扩展到当前位置。例子:
bar =
foo = $(bar)
ifdef foo
frobozz = yes
else
frobozz = no
endif
上例中,"$(frobozz)"的值位“yes”
另一个例子:
foo =
ifdef foo
frobozz = yes
else
frobozz = no
endif
这个例子中的$(frobozz)的值为“no”。
④、ifndef:
ifndef <variable-name>
说明:在<conditional-directive>这一行上,可以有多余的空格,但是不能以Tab键开始(不然被认为是命令)。注释符“#”同样也是安全的。“else”和“endif”也一样,只要不是Tab键开始就行。
注:make在读取Makefile时就计算条件表达式的值,并根据条件表达式的值来选择语句,所以最好不要把自动化变量(如"$@"等)放入条件表达式中,因为自动化变量是在运行时才有的。且避免混乱,make不允许把整个条件语句分成两部分放在不同的文件中。
转载于:https://www.cnblogs.com/weiyi-mgh/p/7040683.html
Makefile文件(六)_使用条件判断相关推荐
- 无字天书之Python第六页(条件判断与循环)
内容大体 传送门 条件判断 if-else if-elif-else 分支语句嵌套 循环语句 简单while while死循环 for循环 range()函数 循环中断 break continue ...
- makefile文件编写_九图记住Makefile
本文首次编辑时间2020.07.20 最后编辑时间2020.08.03 欢迎转载,转载请附上原文链接 参考: GNU make说明文档:https://www.gnu.org/software/mak ...
- 六、 PHP8 条件判断(match)
1. 三元运算符 $name = '晴' echo $name ? $name:null; 2. if $is=true; if($is){var_dump($is); } 3.if else $is ...
- Makefile中的条件判断(ifeq、ifneq、ifdef、ifndef)
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除. 一.条件判断的关键字 日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况.比如在一个工程文件中可编译的源文件很多 ...
- ifeq makefile 或语句_Makefile ifeq、ifneq、ifdef和ifndef(条件判断)
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的.手动编译去操作文件显然是 ...
- makefile条件判断语句和函数
1.makefile中支持条件判断语句 可以根据条件的值来决定make的执行 可以比较两个不同变量或者变量和常量值 ifxxx(arg1,arg2)elseendif 注意事项:条件判断语句只能用于控 ...
- Ansible系列(六):循环和条件判断
Ansible系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 循环 ansible中的循环都是借助迭代来实现的.基本都是以" ...
- Linux疑难杂症解决方案100篇(六)-SHELL编程条件判断和流程控制
今日目标: 熟悉条件判断语句,如判断整数.判断字符串等 熟悉流程控制语句基本语法,如if-else- 一.条件判断语法结构 思考:何为真(true)?何为假(false)? 1. 条件判断语法格式 格 ...
- 【Makefile由浅入深完全学习记录8】条件判断语句
加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C+ ...
- android 结束if循环_简单探究Android平台下' if ' 语句条件判断耗时情况
2017年6月13日 前言 前几日在改Bug时看到好多调试时用的日志语句都被一个日志开关控制着它的执行权.形如: 1 if(Constants.LOG_TAG){2 Log.d(TAG, " ...
最新文章
- python讲1020逆序输出_手把手带你学 Python3(九)| 快速实现数据处理的不二工具(文末有彩蛋)...
- 用CSS的float属性创建三栏布局网页的方法
- 三星笔试能带计算机吗,2021年三星笔试试题+经验谈
- pandas中drop用法_如何使用drop方法对数据进行删减处理
- 【算法竞赛学习】资金流入流出预测-挑战Baseline_时间序列规则
- 有关javabean的说法不正确的是_关于 JavaBean, 下列叙述中不正确的是 ( ) 。_学小易找答案...
- Module build failed: Error: Node Sass version 5.0.0 is incompatible with ^4.0.0.
- 100篇架构文章打包,及offer面试题下载
- 行为设计模式 - 状态设计模式
- 《UNIX网络编程卷1》第一例及问题
- Linux下mysql备份 恢复
- Python 第一章 基础知识
- 策略模式应用场景_朱迪 | 混合研究方法的方法论、研究策略及应用:以消费模式研究为例...
- 软件测试linux笔试题目,linux基础面试题
- python统计词频瓦尔登湖_1.5 python文件操作
- 【渝粤教育】电大中专消费者行为学 (2)作业 题库
- (5)二进制文件方式部署Kubernetes高可用集群----------创建kubeconfig文件Token.csv随机数文件
- 从SVN检出项目下载到本地后出现错误
- html 颜色渐变动画效果,js实现按钮颜色渐变动画效果
- 【华为OD机试真题 C语言】机器人走迷宫