当前位置:网站首页>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》
边栏推荐
猜你喜欢
随机推荐
celery工作原理图
Create a tree structure
Installation of Apache DolphinScheduler version 2.0.5 distributed cluster
Pr第二次培训笔记
Apache DolphinScheduler版本2.0.5分布式集群的安装
用scikit-learn学习谱聚类
idea uses @Autowired annotation to explain the reasons and solutions
mysql 存储过程 动态参数 查询执行结果
内部类、static关键字、final
【Biotin Azide|cas:908007-17-0】Price_Manufacturer
web安全-sql注入漏洞
数据分析 第一篇
3n+1问题
junit总结
Lambda表达式案例
Tributyl-mercaptophosphane "tBuBrettPhos Pd(allyl)" OTf), 1798782-17-8
传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
力扣561. 数组拆分
曲线特征----曲线弯曲程度的探究
【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability








