Makefile:(实验)多个目标匹配时会采用最完整匹配的目标
结论源自实验测试,如果有疏漏希望指出
当Makefile中存在多个匹配的目标时,Makefile会采用哪个匹配的目标呢?
测试的Makefile如下:
.PHONY: all clean quick_sort
all: quick_sort bubble_sort
#目标1
quick_sort:
@echo "matching $@"
@echo 'in quick_sort'
#目标2
%:
@echo "matching $@"
@echo 'in %'
#目标3
%_sort:
@echo "matching $@"
@echo 'in %_sort'
clean:
$(RM) *.o bubble_sort quick_sort
测试结果如下:
$make
matching quick_sort
in quick_sort
matching bubble_sort
in %_sort
在实验中,all目标有两个依赖的子目标quick_sort和bubble_sort。
在匹配quick_sort子目标时,目标1-3都符合,按实验结果,最终执行的是目标1。
在匹配bubble_sort子目标时,目标2-3都符合,按实验结果,最终执行的是目标3。
为了避免从上往下顺序匹配的可能,在匹配quick_sort时,特地把最完整匹配放在目标1。
按上述实验的现象,我们可以发现:
完整匹配 > 通配符半匹配 > 完全通配符匹配
Makefile:(实验)多个目标匹配时会采用最完整匹配的目标的更多相关文章
- makefile实验二 对目标的深入理解 以及rebuild build clean的实现
(一) rebuild build clean的实现 新知识点: 当一个目标的依赖是一个伪目标时,这个伪目标的规则一定会被执行. 贴实验代码 CC := gcc Target := helloworl ...
- makefile实验一 make的基本原则、伪目标、以及不使用.PHONY确实现和伪目标一样功能的一种方法
target: echo "hello_Makefile" .PHONY: clean clean: echo "clean Done .2019" 使用伪目标 ...
- Makefile规则③规则语法、依赖、通配符、目录搜寻、目标
规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ...
- makefile实验四 编译本地的源文件 + 变量的高级主题一
<一>编译本地的源文件 + 变量的模式替换 实验代码 root@ubuntu:~/Makefile_Test/5make_test# vim makefile target := t ...
- org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 6; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标。
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error ...
- 【转载】配置文件报错:不允许有匹配 [xX][mM][lL] 的处理指令目标
今天编写代码的时候,不小心给一个xml文件的首行加了一行空格,导致了启动报了如题类似的错误,查到一篇文章,顺藤摸瓜发现了这个失误,文章转载如下: 框架整合 的时候,XML 配置文件大多数情况是从另一个 ...
- 配置文件报错:不允许有匹配 [xX][mM][lL] 的处理指令目标。
http://www.68idc.cn/help/buildlang/ask/20150108163110.html ————————————————————————————————————————— ...
- Bug解决方案:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 8; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标
十月 17, 2016 10:14:30 下午 org.springframework.context.support.AbstractApplicationContext prepareRefres ...
- 不允许有匹配 "[xX][mM][lL]" 的处理指令目标
八月 , :: 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Se ...
随机推荐
- 企业级Apache详解2
http_conf主配置说明 root@lamp01 apache]# grep -Ev "#|^$" conf/httpd.conf DocumentRoot "/us ...
- Linux提权后获取敏感信息的方法与途径
在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点).下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物.我知道 ...
- web自动化_浏览器驱动chromedriver安装方法(适用RF框架/Selenium/Appium)
在进行UI自动化时,打开浏览器是第一步,这就必须要安装浏览器的驱动,chrome浏览器需要安装chromedriver,下载地址:http://chromedriver.storage.googlea ...
- BZOJ 1008 越狱 组合数学
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1008 题目大意: 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗 ...
- iOS动画暂停和继续-本质是速度控制和时间坐标转换
时间永不停止! 写一个CALayer的分类,控制动画的暂停与继续 extension CALayer { ///暂停动画 func pauseAnimation() { //取出当前时间,转成动画暂停 ...
- php初学习
1.搭建环境:下载wamp5,然后下载安装,安装成功后在电脑的右下角会出现一个方向盘的图标,右键langage选择chinese,然后就可以用了
- 10、Web Service-IDEA-jaxrs 整合spring
1.服务端的开发 1.web项目目录 2.pom <?xml version="1.0" encoding="UTF-8"?> <projec ...
- 关于"XML 文档(2, 2)中有错误:不应有 <xml xmlns=''>"错误
XML文件名 <?xml version="1.0" encoding="utf-8"?> <Config xmlns:xsi="h ...
- python函数可变参数*args和**kwargs区别
#*args(元组列表)和**kwargs(字典)的区别 def tuple_test(*args): for i in args: print 'hello'+i s=('xuexi','mili' ...
- GIT和GitHub的使用总结
目录 一.GIT初始化设置: 创建密钥 添加远程仓库 用户名邮箱配置 Clone远程仓库 创建本地仓库 代理设置 自定义操作 二.GIT基本操作 添加到暂存区区 提交 删除 版本回退 撤销修改 三.G ...