CSDN 不支持Makefile 代码。
Makefile 例子
ifneq (,$(filter $(region), global eea ru in id tr tw jp))
ifneq (,$(filter $(region), tw))
PRODUCT_NAME := product_global
else
PRODUCT_NAME := product_$(region)
endif
endif
判断两个变量,通常是字符串是否相等。
ifeq( 变量1, 变量2)
判断是否不相等。
ifneq( 变量1, 变量2)
filter
$(filter PATTERN…,TEXT)
函数名称:过滤函数—filter。
函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词。可以使用多个模式。模式中一般需要包含模式字符“%”。存在多个模式时,模式表达式之间使用空格分割。
说白了,简单理解就是。TEXT中有符合模式的就返回对应字符串,否则就返回空。
返回值:空格分割的“TEXT”字串中所有符合模式“PATTERN”的字串。
函数说明:“filter”函数可以用来去除一个变量中的某些字符串,我们下边的例子中
就是用到了此函数。
示例:
sources := foo.c bar.c baz.s ugh.h
foo: $(sources)
cc $(filter %.c %.s,$(sources)) -o foo
使用“$(filter %.c %.s,$(sources))”
的返回值给 cc 来编译生成目标“foo”,函数返回
值为“foo.c bar.c baz.s”,去除掉了.h后缀文件。
$(strip )
strip 去空字符语句,去掉字串中开头和结尾的空字符(空字符包括空格、[Tab]等不可显示字符)
ifeq (1, $(strip $(MY_BUILD)))
唯一的不好就是嵌套一堆空格,读起来真难受。也不方便理解。