当前位置:网站首页>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》
边栏推荐
猜你喜欢
随机推荐
HarmonyOS应用开发第一次培训
Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature
斐讯K2路由编译Padavan华硕固件和心得
Gradle的安装配置
信息编码、存储压缩与密码学
高可用 两地三中心
ss-5.consul服务端+生产者+消费者
用scikit-learn学习谱聚类
-寻找鞍点-
生活原则。
[Harmony OS] [ARK UI] ETS context basic operations
breed Web刷机升级详细教材修正编译器固件说明_itkeji.top
内部类、static关键字、final
Shell conditional statement judgment
Lambda表达式案例
dataframe插入一列
-飞机大战-
Business table analysis - balance system
Common fluorescent dyes to modify a variety of groups and its excitation and emission wavelength data in the data
The problem that the rosbag tool plotjuggler cannot open rosbag








