首页 > 其他分享 >Makefile学习笔记

Makefile学习笔记

时间:2022-09-28 08:45:28浏览次数:44  
标签:返回 ... 变量 text Makefile 笔记 学习 names pattern

基本格式

target: dependence
	command
# 冒号之前是目标名,冒号之后是依赖
# 每个command独占一行,每行之前必须有一个tab

.phony: clean
	clean-command
# 以.phony修饰,使make不会将clean识别为实际存在的文件。

特殊变量

%.o : %.c 
	gcc -c -o $@  $< 

# $@表示当前规则的目标名
# $^表示所有依赖
# $<表示第一个依赖

变量定义方式

A  =  xxx    # 延时变量,相当于是一种数学中的函数关系,会受到等号右边内容的变化的影响
B  ?= xxx    # 延时变量,只有第一次定义时赋值才成功;如果曾定义过,此赋值无效 
C  := xxx    # 立即变量
D += yyy 	 # 沿用变量类型,如果 D在前面是延时变量,那么现在它还是延时变量;
# 如果 D在前面是立即变量,那么现在它还是立即变量 

常用函数

字符串处理函数

# 以下所有函数在使用时,需要注意是否有逗号隔开,以及逗号的位置

# substitute,将text中每一处from替换为to
$(subst from,to,text)

# 和功能一样,只是from使用了格式串来表示
$(patsubst pattern,replacement,text)

# 去掉string中前导和结尾的空格,并将字符串中连续多空格处替换为单空格
$(strip string)

# 在字符串in中寻找find,若找到则返回find,否则为空
$(findstring find,in)

# 从text中筛选符合pattern的部分并保留,返回保留内容
$(filter pattern...,text)

# 从text中筛选符合pattern的部分并从中剔除,返回剔除后内容
$(filter-out pattern...,text)

# 按字典序排序并返回
$(sort list)

文件名函数

# 只留下文件的路径
$(dir names...)

# 只留下文件名
$(notdir names...)

# 只留下文件后缀(最后一个后缀,即a.c.o会返回.o)
$(suffix names...)

# 取出文件basename
$(basename names...) 

# 给文件名加上扩展名(后缀)
$(addsuffix suffix,names...)

# 给文件加上路径(前缀)
$(addprefix prefix,names...)

# 取出当前路径下符合pattern的文件名
$(wildcard pattern)

其他函数

# for循环替换,foreach是关键字,表示从list中逐一取出内容赋值给var,并都用text来替换,此语句返回替换后的list
$(foreach var,list,text)

# if条件判断,若condition去除前导和结尾的空格后扩展非空,则计算then-part并返回,否则计算else-part的值并返回
# 如果else-part不存在,则返回空
$(if condition,then-part[,else-part])

# 查询变量的定义状态,以及在何处定义,返回诸如“undefined”之类的字符串
$(origin variable)

# 在shell中命令command,可传递arguments作为参数,返回shell执行结果(以空格隔开的list)
$(shell command arguments)

内容参考:《嵌入式Linux应用开发完全手册》韦东山

标签:返回,...,变量,text,Makefile,笔记,学习,names,pattern
From: https://www.cnblogs.com/kimkey/p/16736742.html

相关文章

  • D3 笔记
    D3D3orD3.js代表"DataDrivenDocuments"选中、添加元素select()方法从文档中选择一个元素,它接收目标元素的名称作为参数并返回第一个匹配该名称HTML节点。举例:......
  • FHQ-treap 学习笔记
    介绍平衡树平衡树,又称treap,是树(tree)以及堆(heap)的合称,具体表现为形式上它是一棵二叉树,而性质上它又满足堆的性质。与普通的BST(BinarySearchTree)相比,它由于具有......
  • axios学习笔记
     一.  安装json-server 01安装npminstall-gjson-serverhttps://github.com/typicode/json-server 02,新建一个db.json文件,把上面链接文档的数据放上去......
  • CSS基础(基于黑马程序员视频的学习笔记)
    一、CSS选择器1、标签选择器选中所有的该标签标签名{CSS属性名:属性值;}2、类选择器.类名{CSS属性名:属性值;}所有标签都有class属性,class属性的属......
  • 九月第二篇关于《程序员修炼之道:从小工到专家》的阅读笔记
    《程序员修炼之道:从小工到专家》阅读笔记这本书是自从进入软件工程系以来所阅读的第二本书,本篇是九月的第二篇阅读笔记,希望在这里记录一些我的感悟。书中中间几个章节提......
  • 前端三件套 HTML+CSS+JS基础知识内容笔记
    HTML基础目录HTML基础HTML5标签doctype标签html标签head标签meta标签title标签body标签文本和超链接标签标题标签段落标签换行标签水平标签强调标签图片标签与超链接标签......
  • 读书笔记|择一城以定财富,择一行以定发展
    题记“最近个人财政吃紧,想着病急乱投医”,看看理财区有什么好的书籍,然后就用两天时间读完了这本——《钱从哪里来》。作者:香帅,本名唐涯,知名金融学者,香帅数字金融工作室创始人......
  • 学习笔记:python列表2
    python学习列表的进一步运用1.减少元素(1)delplace=['lasa','chengdu','litang','xian','lundon']delplace[0]#输出['chengdu','litang','xian','lundon'......
  • 大话设计模式 ---- 第一章简单工厂笔记
    第一章简单工厂模式计算器实现建民哥在大二的时候让我们设计一个口算卡我第一版的设计模式:(虽然功能实现了,但是啥也不是,一旦有新要求需要大改程序直接作废)//......
  • 学习笔记:python:字典删除问题
    python学习:字典学习问题:如何删除字典中的一类元素题目:删除字典friends中年龄大于23的friend一个个删除明显达不到考察的目的,所以刚开始我的想法是:利用循环遍历字典中的......