当前位置:网站首页>Makefile语法
Makefile语法
2022-08-03 05:10:00 【El mundo】
赋值符号
符号 | 说明 | 示例 |
---|---|---|
= | 变量的值是整个makefile中最后被指定的值;与在文中的位置无关。 | x = A y = $(x)B x = B #y的结果是 BB;而不是AB. |
:= | 覆盖之前的值 | x = A y := $(x)B x = B #y的结果是 AB |
?= | 如果没有被赋值过就赋予等号后面的值 | VIR ?= new_value #VTR 的结果是new_value VIR := old_value VIR ?= new_value #VIR 的结果是 old_value |
+= | 添加等号后面的值 | VIR := A VIR += B #VIR 的结果是A B |
自动化变量
自动化变量会把模式中所定义的一系列的文件自动的挨个取出,
直至所有的符合模式的文件都取完,
自动化变量只应该出现在规则的命令中。
符号 | 说明 |
---|---|
[email protected] | 规则中的目标集合。 在模式规则中,如果有多个目标的话,“[email protected]”表示匹配模 式中定义的目标集合 |
$% | 当目标是函数库的时候表示规则中的目标成员名,如果目标不是函数库文件, 那么其值为空。 |
$< | 依赖文件集合中的第一个文件。 如果依赖文件是以模式(即“%”)定义的,那么“$<”就是符合模式的一系列的文件集合。 |
$? | 所有比目标新的依赖目标集合,以空格分开。 |
$^ | 所有依赖文件的集合,使用空格分开。 如果在依赖文件中有多个重复的文件,“$^”会去除重复的依赖文件,值保留一份 |
常用函数
函数 | 说明 | 示例 |
---|---|---|
call | 唯一一个可以用来创建新的参数化的函数。 使用这个函数可以实现对用户自己定义函数引用。 | reverse = $(1) $(2) foo = $(call reverse,a,b) #foo 的结果是 a b #$(1)和 $(2) 表示函数 reverse 的参数。 |
dir | 取目录 | $(dir $(realpath (MKFILE_PATH))) #realpath $(MKFILE_PATH) 返回变量MKFILE_PATH 的绝对路径。 #(dir $(realpath $(MKFILE_PATH)))取该绝对路径的目录部分。 #目录部分是指最后一个反斜杠(“/”)之前的部分。 |
eval | 根据其参数的关系、结构,对它们进行替换展开。 | $(eval include /subdrv.mk) #包含子目录下的subdrv.mk, 并被当前makefile 解析和执行 |
foreach | 循环处理文件列表。 | $(foreach < var >,< list >,< text >) #把 list 中的参数单次逐一取出来放到参数var中,然后再执行 text 所包含的表达式。 #每次text都会返回一个字符串 |
ifeq else endif | 条件语句的开始,判断表达式与某个值是否相等。 表示条件表达式为假的情况 表示一个条件语句的结束,任何一个条件表达式都应该以endif结束 | |
lastword | 返回最后一个字符串 | MKFILE_PATH := $(lastword $(MAKEFILE_LIST)) #返回变量 MAKEFILE_LIST 的最后一个字符串,赋值给MKFILE_PATH |
patsubst | 模式字符串替换函数 | $(patsubst % , dir% , $(SUBDIRS) ) # 在变量SUBDIRS所有的名字前面加上 “dir” ** $(patsubst %/, %, $(dir $(mkfile_path))) #将字符串中后缀为 “/” 替换为空** |
realpath | 返回一个绝对路径 | ROOT = $(realpath ./) #返回当前路径的绝对地址,赋值给ROOT |
subst | 字符串替换函数 | $(subst < from >, < to >, < string> ) #把字串< string >中的< from >字符串替换成< to > |
wildcard | 扩展通配符 | $(wildcard *.c) #获取当前目录下所有的.c文件 |
参考
《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.4》
边栏推荐
猜你喜欢
随机推荐
idea uses @Autowired annotation to explain the reasons and solutions
1095 解码PAT准考证 (25 分)(C语言)
1060 爱丁顿数 (25 分)
1.ROS环境搭建与基础工作
13.< tag-动态规划和回文字串>lt.647. 回文子串 + lt.516.最长回文子序列
力扣561. 数组拆分
Alienware上线首个数字时装AR试穿体验
Exception (abnormal) and Error (error) difference analysis
junit总结
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
Install PostgreSQL on Windows
Odps temporary query can write SQL, turned out to a named?
js实现一个 bind 函数
2022暑假牛客多校联赛第一场
Harmony OS ets ArkUI 】 【 】 the development basic page layout and data connection
IO process thread -> thread -> day5
Talking about GIS Data (5) - Geographic Coordinate System
Tributyl-mercaptophosphane "tBuBrettPhos Pd(allyl)" OTf), 1798782-17-8
1. 两数之和
第四次培训