我是靠谱客的博主 过时棉花糖,最近开发中收集的这篇文章主要介绍脚本系列 —— 从Makefile中学习“ifneq / ifeq, filter, strip”(持续更新)例1例2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

摘取一些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所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部