首页 > 其他分享 >Makefile学习(二)

Makefile学习(二)

时间:2024-03-17 22:57:42浏览次数:27  
标签:函数 文件名 Makefile 目录 学习 字符串 替换

参看文档:《跟我一起写 Makefile》

Makefile中常用的自动化变量:

  1. $@:表示规则中的目标文件名。
  2. $<:表示规则中的第一个依赖文件名。
  3. $^:表示规则中的所有依赖文件列表,以空格分隔并去重。
  4. $?:表示规则中所有比目标文件更新的依赖文件列表。
  5. $*:表示不包括扩展名的目标文件名。
  6. $(@D):表示目标文件所在的目录。
  7. $(@F):表示目标文件的文件名部分。
  8. $(<d):表示第一个依赖文件所在的目录。< li="">
  9. $(<f):表示第一个依赖文件的文件名部分。< li="">
 

Makefile常用函数:

1、函数 subst

函数 subst 用来完成字符串替换,调用形式如下: $(subst ,,) 此函数的功能是将字符串中的内容替换为,函数返回被替换以后的字符串,比如如下示例: $(subst lethe,LETHE,my name is lethe) 把字符串“my name is lethe”中的“lethe”替换为“LETHE”,替换完成以后的字符串为“my name is LETHE”。  

2、函数 patsubst

函数 patsubst 用来完成模式字符串替换,使用方法如下: $(patsubst ,,) 此函数查找字符串中的单词是否符合模式,如果匹配就用来替换掉,可以使用通配符“%”,表示任意长度的字符串,函数返回值就是替换后的字 符串。如果中也包涵“%”,那么中的“%”将是中的那个“%”所代表的字符串,比如: $(patsubst %.c,%.o,a.c b.c c.c) 将字符串“a.c b.c c.c”中的所有符合“%.c”的字符串,替换为“%.o”,替换完成以后的字符串为“a.o b.o c.o”。  

3、函数 dir

函数 dir 用来获取目录,使用方法如下: $(dir <names…>) 此函数用来从文件名序列中提取出目录部分,返回值是文件名序列的目录部分,比如: $(dir ) 提取文件“/src/a.c”的目录部分,也就是“/src”。  

4、函数 notdir

函数 notdir 看名字就是知道去除文件中的目录部分,也就是提取文件名,用法如下: $(notdir <names…>) 此函数用与从文件名序列中提取出文件名非目录部分,比如: $(notdir ) 提取文件“/src/a.c”中的非目录部分,也就是文件名“a.c”。  

5、函数 foreach

foreach 函数用来完成循环,用法如下: $(foreach , ,) 此函数的意思就是把参数中的单词逐一取出来放到参数中,然后再执行所包含的表达式。每次都会返回一个字符串,循环的过程中,中所包含的每个字符串会以空格隔开,最后当整个循环结束时,所返回的每个字符串所组成的整个字符串将会是函数 foreach 函数的返回值。  

6、函数 wildcard

通配符“%”只能用在规则中,只有在规则中它才会展开,如果在变量定义和函数使用时, 通配符不会自动展开,这个时候就要用到函数 wildcard,使用方法如下: $(wildcard PATTERN…) 比如: $(wildcard *.c) 上面的代码是用来获取当前目录下所有的.c 文件,类似“%”。

标签:函数,文件名,Makefile,目录,学习,字符串,替换
From: https://www.cnblogs.com/lethe1203/p/18079373

相关文章

  • m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:     2.算法涉及理论知识概要        随着人工智能和机器学习技术的飞速发展,手势识别技术在人机交互、虚拟现实、智能家居等领域的应用越来越广泛。基于深度学习网络的手势识别系统凭借其强大的特征提取和......
  • 基于yolov2深度学习网络的视频手部检测算法matlab仿真
    1.算法运行效果图预览输入mp4格式的视频文件进行测试,视频格式为1080p@30.   2.算法运行软件版本matlab2022a  3.算法理论概述         近年来,深度学习在计算机视觉领域取得了显著成果,特别是在目标检测任务中。YOLO(YouOnlyLookOnce)系列算法作为其中......
  • Makefile学习(一)
    参看文档:《跟我一起写Makefile》Makefile的基本规则:target...:prerequisites...command......target也就是一个目标文件,可以是ObjectFile,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。prerequisites......
  • Word2vec 学习笔记
    word2vec学习笔记0.引言1.Word2vec简介1-1.CBOW1-2.SG2.实战0.引言最近研究向量检索,看到有同事使用MeCab、Doc2Vec,所以把Word2vec这块知识学习一下。1.Word2vec简介Word2vec即wordtovector,顾名思义,就是把词转换成向量,该方法在2013年由谷歌公司......
  • vim,gcc,gdb与Makefile的使用
    一、Linux编辑器-vim使用1.vim的基本概念vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下(1)正常/普通/命令模式(Normalmode)控制屏幕光标的移动,字符、字或行的删除,移动复制......
  • 079基于深度学习的香蕉成熟度检测小程序版_含10多种模型
    代码下载和视频演示地址:079基于深度学习的香蕉成熟度检测小程序版_含10多种模型_哔哩哔哩_bilibili效果展示图如下:​代码文件展示如下: ​运行01数据集文本生成制作.py可以读取图片路径保存再txt文本中,运行02train.py可以对txt文本中的图片路径读取并训练模型,在02......
  • 综合架构学习笔记-3---
    综合架构学习笔记-3---rsync-扩展脚本虚拟机测试环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0知识回顾rsync如何部署?1.安装软件rsync2.编写配置文件虚拟用户备份目录密码文件具体流程演示linux系统安装部署服务流程:a下载安装软件yumb编写配置......
  • 综合架构学习笔记-2
    综合架构学习笔记-2---rsync-实战实战1rsync守护进程部署测试环境--虚拟机环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0步骤服务端第一步:下载安装软件 [root@localhost~]#yuminstall-yrsync 第二步:编写配置文件把原来的配置文件删除 [roo......
  • 综合架构学习笔记-3---rsync-扩展脚本
    综合架构学习笔记-3---rsync-扩展脚本虚拟机测试环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0知识回顾rsync如何部署?1.安装软件rsync2.编写配置文件虚拟用户备份目录密码文件具体流程演示linux系统安装部署服务流程:a下载安装软件yumb编写配置......
  • 综合架构学习笔记-2---rsync-实战
    综合架构学习笔记-2---rsync-实战实战1rsync守护进程部署测试环境--虚拟机环境ip10.0.1.0网关10.0.1.2子网掩码255.255.255.0步骤服务端第一步:下载安装软件 [root@localhost~]#yuminstall-yrsync 第二步:编写配置文件把原来的配置文件删除 [roo......