八、UNIX-LINUX---Makefile笔记二-使用条件判断(1-2)-示例-语法

一、示例

  • 使用 ifeq 、else、endif 来执行满足条件的语句
# 定义库的变量
	libs_for_gcc = -lgnu
	normal_libs

# 生成的目标
	foo : $(objects)
# 判断$(CC)是否为gcc
	ifeq($(CC),gcc)
	$(CC) -o foo $(objects) $(libs_for_gcc)
# $(CC)不是gcc
	else
	$(CC) -o foo $(objects) $(normal_libs)
# 结束符
	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)

二、语法

  • 条件表达式的语法为
  • 关键字

    有 ifeq、ifneq、ifdef、ifndef
	<conditional-directive>  #关键字
	<text-if-true>
	endif

# 以及

	<conditional-directive> #关键字
	<text-if-true>
	else
	<text-if-false>
	endif	
  • 第一个关键字 ifeq

  • 若、相同则为真,则执行真的命令语句
	ifeq (<arg1>,<arg2>)
	ifeq '<arg1>''<arg2>'
	ifeq "<arg1>""<arg2>"
	ifeq "<arg1>"'<arg2>'
	ifeq '<arg1>'"<arg2>"
  • ifeq 小示例
# strip函数判断变量foo的值是否为空,
# 若为空则执行<text-if-empty>
	ifeq ($(strip,$(foo)))
	<text-if-empty>
	endif
  • 第二个关键字 ifneq

  • 若、不相同则为真,则执行真的命令语句
	ifneq (<arg1>,<arg2>)
	ifneq '<arg1>''<arg2>'
	ifneq "<arg1>""<arg2>"
	ifneq "<arg1>"'<arg2>'
	ifneq '<arg1>'"<arg2>"
  • 第三个关键字 ifdef

# 若<variable-name>非空,ifdef则为真
  • 2个小示例
# 此示例 $(frobozz)的值为yes
	bar =   # bar值为空
	foo = $(bar) # 但是$(bar)这个变量名不是空的
	ifdef foo
	frobozz = yes
	else
	forbozz = no
	endif

# 此示例 $(frobozz)的值为no
	foo =   # foo为空
	ifdef foo
	frobozz = yes
	else
	frobozz = no
	endif
  • 第四个关键字 ifndef

# 若<variable-name>w为空,ifdef则为真
  • 与 ifdef 相反
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值