Android Makefile常用函数简介(不定期更新)
2017-03-02 08:16
531 查看
Android Makefile常用函数简介(不定期更新)
Qidi 2017.02.20 Markdown & HaroopadCSDN的Markdown编辑器对美元符号($)和百分号(%)的支持好像有问题。下面正文中的括号前都有美元符号($),我现在已经为这些美元符号额外添加转义符号了。如果还有没显示出来的,烦请告知。谢谢。
而且CSDN对特定关键字会自动添加超链接,比如Android、java等,这也影响了Markdown文本的正确显示。
下次再在CSDN发表博客,我还是换回普通编辑器吧。
word N, TEXT
作用:取出TEXT中第N个单词
示例:$(word 3, aaa bbb ccc) 结果为 ccc
出处:main.mk:26:#TOP := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
words TEXT
作用:返回TEXT中的单词数目
示例:$(words aaa bbb ccc) 结果为 3
出处:main.mk:26:#TOP := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
dir FILENAME
作用:返回FILENAME文件的目录
示例:$(dir core/main.mk) 结果为 core/
出处:main.mk:26:#TOP := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
patsubst FROM, TO, FILELIST
作用:将FILELIST中符合模式(pattern)FROM的文件名或字符串替换为TO模式那样的文件名或字符串
示例:$(patsubst %c, %.o, aaa.c bbb.c) 结果是 aaa.o bbb.o
出处:main.mk:27:#TOP := $(patsubst %/, %, $(TOP))
lastword TEXT
作用:返回TEXT文本中的最后1个单词。相当于$(word $(words TEXT), TEXT)
示例:$(lastword aaa bbb ccc) 结果为 ccc
出处:clear_cars.mk:377:MAKEFILE_LIST := $(lastword $(MAKEFILE_LIST))
filter PATERN, TEXT
作用:取出TEXT中符合PATERN模式的字符串
示例:$(filter a%, aaa abc bbb ccc) 结果为 aaa abc
出处:envsetup.mk:252:ifneq ($(filter dax%, $(TARGET_PRODUCT)), )
filter-out PATTERN, TEXT
作用:取出TEXT中除了符合PATTERN模式的其余字符串
示例:$(filter-out aaa, aaa bbb ccc) 结果为 bbb ccc
出处: Android.mk:52:LOCAL_SRC_FILES := $(filter-out DolbySoundTile.java DolbySoundController.java, $(LOCAL_SRC_FILES))
strip TEXT
作用:去掉TEXT中的空格
示例:$(strip aaa bbb ccc) 结果为 aaabbbccc
出处:dolby-product.mk:49:ifneq ($(strip $(DOLBY_MONO_SPEAKER)), )
findstring TARGET, TEXT
作用:在TEXT字符串中查找并返回TARGET字符串,若不存在则返回空
示例:$(findstring aaa, aaa bbb ccc) 结果为 aaa
出处:Android.mk:14:ifeq ($(findstring arm, $(TARGET_ARCH)), arm)
error TEXT
作用:打印内容为TEXT的错误消息,并结束makefile运行
示例:$(error “Fatal error occured.”)
出处: Android.mk:18:$(error “Unsupported architecture for DAP1: $(TARGET_ARCH)”)
【补充说明】
很多时候我们还会看到有all-makefiles-under、all-c-files-under、all-cpp-files-under、all-java-files-under、find-subdir-files、my-dir、inherit-product、inherit-device等函数的调用。举个例子:
LOCAL_SRC_FILES := $(call all-java-files-under, src)这个调用就是要查找出
src/目录下的所有java源文件,并将这些源文件的名字添加到
LOCAL_SRC_FILES这个变量中。
这些makefile函数其实都是在
build/core/*.mk文件中定义的,通常以define关键字开头。如果我们想知道它们的作用是什么,可以直接去makefile文件中查看。在
build/core/目录下使用命令
grep -rn ^define\ all-java-files-under就可以轻松查找到相应命令的定义。
比如all-java-files-under就是在
build/core/definitions.mk文件中定义的。定义内容如下:
########################################################## ## Find all of the java files under the named directories. ## Meant to be used like: ## SRC_FILES := $(call all-java-files-under, src tests) ########################################################## define all-java-files-under $(call all-named-files-under, *.java, $(1)) endef
相关文章推荐
- Javascript常用函数收集(不定期更新)
- Android Studio插件整理 (个人整理和常用 不定期更新)
- 各种乱七八糟常用函数的简单用法(不定期更新)
- Android开发常用工具类(不定期进行更新)
- python常用函数和使用技巧日常总结(不定期更新)
- Android MakeFile 常用变量/函数总结
- db2中的常用函数(不断更新中........)
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- db2中的常用函数(不断更新中........)
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- Java更新XML的四种常用方法简介
- asp.net2.0常用基本函数大全(更新中)