概述
摘取一些Makefile文件里的片段,进行语法讲解
例1
ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
# BUILD_NUMBER has a timestamp in it, which means that
# it will change every time. Pick a stable value.
FILE_NAME_TAG := eng.$(USER)
else
FILE_NAME_TAG := $(BUILD_NUMBER)
endif
上面这段语句分别用到了"ifneq",“filter”,“%”,下面详细解释一下
ifneq
条件判断语句,和ifeq
相反;若后边两个对象不相等,则条件成立;
这里的两个判断对象分别是“”(空值)
和“$(filter eng.%,$(BUILD_NUMBER))”
filter
“$(filter eng.%,$(BUILD_NUMBER))”,这段语句的意思是从变量$(BUILD_NUMBER)
中筛选出包含eng.%
的部分,这其中的%
是Makefile的通配符;
例如:
$(filter eng.%,“eng.123”)的结果就是"eng.123"
$(filter eng.,“eng.123”)的结果就是"eng."
综上分析,此例所做处理就是判断变量BUILD_NUMBER
是否包含eng.
,如果包含则FILE_NAME_TAG被赋值为eng.$(USER),否则被赋值为$(BUILD_NUMBER)
例2
ifneq ($(strip $(TARGET_NO_KERNEL)),true)
INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
else
INSTALLED_KERNEL_TARGET :=
endif
strip
这个关键字的作用是去掉对象中开头
和结尾
的空字符,包括空格,Tab缩进等不可见字符;
例如:
$(strip " a bc “)的结果为"a bc”
最后
以上就是过时棉花糖为你收集整理的脚本系列 —— 从Makefile中学习“ifneq / ifeq, filter, strip”(持续更新)例1例2的全部内容,希望文章能够帮你解决脚本系列 —— 从Makefile中学习“ifneq / ifeq, filter, strip”(持续更新)例1例2所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复