makefile使用条件判断

1、条件关键字四个

a、ifeq

ifeq (<arg1>,<arg2>)

ifeq '<arg1>' '<arg2>'

ifeq "<arg1>" "<arg2>"

ifeq "arg1" 'arg2'

ifeq 'arg1' "arg2"

endif

关键字比较参数arg1和arg2的值是否相同,如果相同则表达式为真,否则为假。

例:

a=1
b=2
all:

ifeq ($a,$b)
	echo "a=b"
else
	echo "a!=b"
endif

ifeq '$a' '$b'
	echo "a=b"
else
	echo "a!=b"
endif

ifeq "$a" "$b"
	echo "a=b"
else
	echo "a!=b"
endif

ifeq '$a' "$b"
	echo "a=b"
else
	echo "a!=b"
endif

ifeq "$a" '$b'
	echo "a=b"
else
	echo "a!=b"
endif

make -s -all

a!=b
a!=b
a!=b
a!=b
a!=b

b、ifneq

ifneq (<arg1>,<arg2>)

ifneq '<arg1>' '<arg2>'

ifneq "<arg1>" "<arg2>"

ifneq "arg1" 'arg2'

ifneq 'arg1' "arg2"

endif

关键字比较参数arg1和arg2的值是否相同,如果不相同则表达式为真,否则为假。

例:

a=1
b=2
all:

ifneq ($a,$b)
	echo "a=b"
else
	echo "a!=b"
endif

ifneq '$a' '$b'
	echo "a=b"
else
	echo "a!=b"
endif

ifneq "$a" "$b"
	echo "a=b"
else
	echo "a!=b"
endif

ifneq '$a' "$b"
	echo "a=b"
else
	echo "a!=b"
endif

ifneq "$a" '$b'
	echo "a=b"
else
	echo "a!=b"
endif
make  -s -all

a=b
a=b
a=b
a=b
a=b

c、ifdef 

ifdef关键字表示如果值非空则执行,其格式如下
ifdef <variable-name>

ifdef关键字判断变量<variable-name>的值,如果非空,则表达式为真否则为假。

例:

a=a
b=b
all:

ifdef a
	echo $a
else
echo null
endif

ifdef b
	echo $b
else
	echo null
endif

ifdef c
	echo $c
else
	echo null
endif

make -s -all

a
b
null

d、 ifndef关键字表示如果为空则执行,其格式如下

ifndef <variable-name>

ifndef关键字判断变量<variable-name>的值。如果为空则表示为真,否则为假。

例:

a=a
b=b
c=
all:

ifndef a
	echo $a
else
	echo null
endif

ifndef b
	echo $b
else
	echo null
endif

ifndef c
	echo c
else
	echo null
endif

make -s -all

null
null
c

<conditionnal-directive> 所在的行中,多余的空格是被允许的,但是不能以Tab键作为开始。而注释符“#”同样也是安全的。else和 endif关键字也一样,不能以Tab键开始。


循环编译每个子目录的Makefile

SUBDIRS=src\
	sec
	
all:
   @if test "$(SUBDIRS)" != ""; then \
   it="$(SUBDIRS)" ; \
   for i in $$it ; do \
      echo "making all in `pwd`/$$i"; \
      ( cd $$i ; $(MAKE) ) ; \
      if test $$? != 0 ; then \
         exit 1 ; \
      fi  \
   done \
fi




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值