filter:
$(filter PATTERN…,TEXT)
函数名称:过滤函数—filter。
函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所
有符合此模式的单词。可以使用多个模式。模式中一般需要包含模式字
符“%”。存在多个模式时,模式表达式之间使用空格分割。
返回值:空格分割的“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”
————————————————
拓展python中的filter用法:
Python内建的filter()
函数用于过滤序列。
和map()
类似,filter()
也接收一个函数和一个序列。和map()
不同的时,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
1
2
3
4
5
6def is_odd(n): return n % 2 == 1 filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]) # 结果: [1, 5, 9, 15]
把一个序列中的空字符串删掉,可以这么写:
1
2
3
4
5
6def not_empty(s): return s and s.strip() filter(not_empty, ['A', '', 'B', None, 'C', ' ']) # 结果: ['A', 'B', 'C']
可见用filter()
这个高阶函数,关键在于正确实现一个“筛选”函数。
make file中ifneq含义
ifneq是比较两个参数是否相同。
ifneq ($(BOARD_HAVE_BLUETOOTH_BCM),)
第二个参数空就是NULL
意思是$(BOARD_HAVE_BLUETOOTH_BCM)的值不是NULL就可以进行下面的编译处理
$(BOARD_HAVE_BLUETOOTH_BCM)是获取make file中的环境变量或者宏定义 ---- BOARD_HAVE_BLUETOOTH_BCM的值。
————————————————
最后
以上就是开放寒风最近收集整理的关于Linux之Makefile (filter) (ifneq) --- 分析的比较清楚的全部内容,更多相关Linux之Makefile内容请搜索靠谱客的其他文章。
发表评论 取消回复