makefile 规则的覆盖

news2024/10/6 3:56:32

makefile 中经常会使用规则的覆盖,同样一个target 可能有多个prerequisites,这种依赖关系可以放到一起,也可以分开指定。

例1:

test1:
    @echo "test111"

test2:
    @echo "test222"

test3:
    @echo "test333"

hehe: test1 test2 test3
    @echo "get hehe"

test: hehe

上面例子,对于target hehe,有多个prerequisites: test1 test2 和test3,make的时候会依次解析依赖目标。

运行后的结果为:

这里的规则:

hehe: test1 test2 test3

也是可以分开制定。

例2:

test1:
    @echo "test111"

test2:
    @echo "test222"

test3:
    @echo "test333"

hehe: test1
hehe: test2
hehe: test3
    @echo "get hehe"

test: hehe

 这样的运行结果:

可以看到 例1例2 中的结果是一样的。

从上面两个例子看到对于目标 hehecommand只有一处使用,如果换成两个command会有什么现象呢?

例3: 

test1:
    @echo "test111"

test2:
    @echo "test222"

test3:
    @echo "test333"

hehe: test1
    @echo "11111"
hehe: test2
    @echo "22222"
hehe: test3

test: hehe

来看下运行结果:

从结果我们得出结论:

  • makefile 规则中同一个目标的不同依赖是可以分开指定;
  • makefile 规则中依赖关系是可以叠加的,但是命令只能覆盖;
  • makefile 第一个依赖目标是根据最终的命令确定,其他依赖是按照顺序;

通过例3,确定最终的 command 是 echo 22222,此刻依赖目标为 test2,所以test2会作为 hehe 的第一个依赖目标,其他按照定义时候的顺序。

例4:

test1:
    @echo "test111"

test2:
    @echo "test222"

test3:
    @echo "test333"

hehe: test1
hehe: test2
hehe: test3
    @echo "3333"

test: hehe

来看下运行结果:

从例子中虽然test3是最后依赖,但是由于command的缘故,test3会被最先依赖,其他的依赖则按照定义时候的顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/451786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vsync-app 不稳定导致抖动

问题描述:跟对比机器对比uc 浏览器新闻页滑动场景,出现抖动 1、trace 看是没有丢帧,对比看送帧buffer 给到 SF 步调不够一致,从间隔较大的两个 送帧buffer看,发现vsync-app 时间比正常的要长3ms 左右,vsync…

网络交换机端口管理工具

如今,企业或组织级网络使用数百个交换机端口作为其 IT 基础架构的一部分来实现网络连接。这使得交换机端口管理成为日常网络管理任务的一部分。传统上,网络管理员必须依靠手动网络交换机端口管理技术来跟踪交换机及其端口连接状态。这种手动任务弊大于利…

基于斯坦福大学开源,从零搭建chatGPT

下载地址: https://huggingface.co/datasets/togethercomputer/RedPajama-Data-1T 预处理仓库:https://github.com/togethercomputer/RedPajama-Data 复刻ChatGPT!斯坦福等开启红睡衣计划,开源1.2万亿token训练集 【新智元导读…

JAVA队列(Queue)用法附实例讲解

队列是什么 队列用于模拟队列这种数据结构,队列通常是指“先进先出”的容器。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素 …

【JavaWeb】Servlet(崔老师版)

文章目录 1.概述1.1 JavaWeb三大组件1.2 Servlet作用 2.ServletConfig接口3.Servlet接口3.1 实现Servlet的方式3.2 Servlet生命周期 4.HttpServlet抽象类6.ServletContext5.1 概述5.2 获取ServletContext5.3 JavaWeb四大域对象5.4 获取应用初始化参数5.5 ServletContext获取资源…

【UML建模】时序图(Sequence Diagram)

文章目录 1.概述2.时序图的组成元素2.1.角色(Actor)2.2.实体和对象2.3.生命周期线(Lifeline)2.3.1.激活(Activation)2.3.2.消息(Messages)2.3.3.组合片段(Fragments&…

learn C++ NO.1——命名空间域、输入输出、函数重载

前言 什么是C C(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼斯特劳斯特卢普在AT&T贝尔工作室研发。C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的…

Cache存储系统详解(全相联映射、直接映射、组相联映射、替换策略和性能计算)

1. 存储系统的层次结构 为了解决容量、速度和价格之间的矛盾,把各种不同存储容量,不同存取速度,不同价格的存储器,按照一定的体系结构组织起来,使所存放的程序和数据按层次分布在各存储器中,形成---多层次的…

读书笔记//《数据科学工程实践》

出版时间:2021年11月 副标题:用户行为分析、A/B实验、SQLFlow 作者们是一线互联网企业的数据科学家、数据分析师和算法工程师,主要就职于滴滴、部分就职于腾讯、快手等。 点评:神仙下凡布道。感谢大佬们的分享。本书让我领略了大厂…

小白也能看懂,解读数据中台

不同的企业对数据有不同的需求。企业数据应用不断更新迭代,企业的中台系统也需要不断变化。从数据处理与数据治理两个维度出发,可以设计一个解耦的数据中台体系架构。该数据中台体系架构具有一定的柔性,可按照企业应用需求进行组合&#xff0…

多语言(CurlPHPPHPsdkJAVAC#Python)调用阿里巴巴商品API接口

2月2日消息,《晚点LatePost》独家报道,阿里集团国内批发业务1688近期完成了一系列组织和业务调整。其中,原1688商贸发展中心和产地发展中心合并为1688商家发展中心,由原商贸发展中心总经理王强负责;1688新成立分销供应…

苹果天气应用专利获批,苹果Find My技术改变防丢技术走向

根据美国商标和专利局(USPTO)公示的清单,苹果近日获得了名为“用于管理天气信息的用户界面”专利,编号为 US 11630559 B2。 苹果在专利描述中表示,部分管理天气信息的技术复杂且效率低下,用户需要多次点击…

spring redis Sentinel 哨兵 原理

客户端选择 redis 常用的连接客户端 有三个 Jedis:是老牌的Redis的Java实现客户端,提供了比较全面的Redis命令的支持,Redisson:实现了分布式和可扩展的Java数据结构。Lettuce:高级Redis客户端,用于线程安…

el-table合计功能滚动条层级问题

问题描述 版本:2.15.13 el-table在使用合计功能及固定列功能的同时,由于固定列的结构是固定区域增加了div加上定位,用来盖住下面的内容。当使用了合计功能的时候滚动条的区域在el-table__body-wrapper会导致固定列区域下的滚动条被挡住&…

计算机网络三:运输层

一、运输层 1. 概述 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能,使得不同主机好像直接连在一起一样 运输层协议是在端系统中而不是在路由器中实现的。网络路由器仅作用于网络层分组(即数据报)的网络层字段,而不检查封装在该数据报…

微搭低代码学习之数据展示

低代码平台是一个快速发展的领域,未来有着广阔的发展前景。以下是一些低代码平台未来的发展方向: 1.人工智能和机器学习 随着人工智能和机器学习技术的不断发展,低代码平台将能够更好地利用这些技术来提高应用程序的智能化和自动化水平。例如…

APP渗透—绕过反代理、反证书检测

APP渗透—绕过反代理、反证书检测 1. 前言1.1. 无法获取数据包情况 2. 反代理2.1. 反代理情况2.1.1. 某牛牛反代理2.1.2. 某探反代理 2.2. 绕过反代理2.2.1. Proxifier设置2.2.1.1. 设置代理服务器2.2.1.2. 配置代理规则2.2.1.3. 检测状态 2.2.2. 抓包测试 2.3. 总结 3. 反证书…

用HTML+CSS简单的画一个支付宝页面(超详细)

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:老茶icon 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,计…

Pyqt实现合并PDF遇到的问题集合

1.exit code -1073740791报错 pycharm遇到如下报错: “Process finished with exit code -1073740791 (0xC0000409)” 就是遇到这种问题就不知道问题在哪里,有点摸不着头脑 解决措施: 1.点击导航栏“Run”后选择“Edit Configurations” …

Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…