我是靠谱客的博主 开放寒风,最近开发中收集的这篇文章主要介绍Linux之Makefile (filter) (ifneq) --- 分析的比较清楚,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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中,删掉偶数,只保留奇数,可以这么写:

def is_odd(n):
    return n % 2 == 1

filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
# 结果: [1, 5, 9, 15]

把一个序列中的空字符串删掉,可以这么写:

def 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 (filter) (ifneq) --- 分析的比较清楚所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部