当前位置:网站首页>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》
边栏推荐
- 集合框架知识
- [Harmony OS] [ArkUI] ets development graphics and animation drawing
- 信息编码、存储压缩与密码学
- Apache DolphinScheduler版本2.0.5分布式集群的安装
- Exception (abnormal) and Error (error) difference analysis
- 背压机制
- ss-4.1-1个eurekaServer+1个providerPayment+1个consumerOrder
- web安全-sql注入漏洞
- 《录取通知》 观后感
- idea uses @Autowired annotation to explain the reasons and solutions
猜你喜欢

typescript47-函数之间的类型兼容性

传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程

Installation of Apache DolphinScheduler version 2.0.5 distributed cluster

力扣561. 数组拆分

js implements a bind function

PotPlayer实现上班摸鱼电视自由

Detailed explanation of MOSN reverse channel

集合框架知识

Build your own web page on the Raspberry Pi (2)

js实现一个 bind 函数
随机推荐
【Biotin Azide|cas:908007-17-0】Price_Manufacturer
如何不耍流氓的做运维之-SHELL脚本
Response 重写设置返回值
3. 无重复字符的最长子串
JS学习笔记(三)
【转】最小描述长度准则MDL(Minimun Description Length)
Fluorescent marker peptides FITC/AMC/FAM/Rhodamine TAMRA/Cy3 / Cy5 / Cy7 - Peptide
Detailed explanation of MOSN reverse channel
用scikit-learn学习谱聚类
Alienware上线首个数字时装AR试穿体验
Power button 561. An array of split
-钞票兑换-
【 Harmony OS 】 【 ano UI 】 lightweight data storage
ModelArts第二次培训
IO process thread -> thread -> day5
1058 选择题 (20 分)(C语言)
ss-4.2 多个eureka集群案例
ss-1.curl (cloud-provider-payment8001)
业务表解析-余额系统
Peptides mediated PEG DSPE of phospholipids, targeted functional materials - PEG - RGD/TAT/NGR/APRPG