Makefile学习笔记

1.判断是否相等

ifeq 条件语句
    条件成立时要做的事情
endif
或者
ifeq 条件语句
    条件成立时要做的事情
else
    条件不成立时要做的事情
endif

其中“条件语句”可以有几种形式:
判断参数”arg1”与”arg2”的值是否相等:

ifeq (arg1,arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"

判断参数”arg1”与”arg2”的值是否不相等:

ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"

条件语句也可以make函数,例如使用“strip”函数判断函数是否返回空:

ifeq ($(strip $(foo)),)
    #TODO
endif

2.判断变量值是否非空
语法:

ifdef var
    #TODO
else
    #TODO
endif

同理也有ifndef的形式:

ifndef var
    #TODO
else
    #TODO
endif

注意:
以上条件判断语句类似于编程语言中if的条件判断,不同的是,在Makefile中,以上条件判断中,一组条件判断最多只能有一个else语句,没有else if语句,而编程语言中可以有任意多个else if语句,在makef中,可以通过多次嵌套实现else if的同样效果。如:

ifeq 条件1
    #TODO
else
    if 条件2
        #TODO
    else
        #TODO
    endif
endif

另外需要注意的是,make是在读取Makefile时就计算条件表达式的值,并根据条件表达式的值来选择语句,所以,不要把自动化变量(如“$@”等)放入条件表达式中,因为自动化变量是在运行时才有的。

你可能感兴趣的:(Linux)