make prerequisite: 根据文件状态自动确定是否重新执行

news2024/11/18 13:59:09

Basic

先看一个简单的例子(引自Makefile Tutorial By Example):当我们对同一个makefile执行两次make命令时,由于第一次运行已经生成了目标文件blah,第二次make会直接输出'blah' is up to date,而不会重新compile,这时即使我们修改blah.c,依然是同样的情况。在不使用make clean的情况下想要做到根据blah.c文件的情况自动判断是否需要重新执行make,可以将blah.c作为blah的prerequisite,这样在运行make command时,make会自动判断是否需要真正执行。开始执行的条件有两个:

1.首次运行,即blah并不存在。 

 2. 当prerequisite的修改时间比已经存在的blah更新时,make将会重新执行;否则,make将输出'blah' is up to date,并跳过本次执行。

Advanced Topic

当项目结构较为复杂时,合理的makefile依赖组织能够大大节约时间。仍然以Makefile Tutorial By Example中的sample进行说明,假定我们的C project main.cpp需要先执行one.cpp,再执行two.cpp,最后main.cpp依赖one与two的输出结果,那么依照下图中的依赖关系编写makefile,便能流畅的实现部分reuse:当只有one相关的部分修改,且two的结果已经存在时,只执行one, main。

最后推荐一个能够将makefile的依赖变成图片的工具,来自SO:make - Visualizing dependencies coded up in makefiles as a graph - Unix & Linux Stack Exchangej

使用方法贴在这面的有人打不开link。

 

  • Installation (make sure graphviz is installed, e.g. with sudo apt install graphviz on Debian systems)
cd /my/install/dir
git clone https://github.com/lindenb/makefile2graph
cd makefile2graph
make
  • Generate PNG (no need to use dedicated variable GDIR if you add makefile2graph's path to your PATH variable)
cd /path/to/my/makefile
GDIR=/my/install/dir/makefile2graph
make -Bnd |  ${GDIR}/make2graph | dot -Tpng -o my_graph.png

生成的图片大概这样:

 

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

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

相关文章

(四)Redis配置文件redis.conf详解

目录 一、Units单位 二、INCLUDES(包含配置) 三、NETWORK(网络配置) 四、GENERAL(总则) 五、SNAPSHOTTING(拍摄快照) 六、REPLICATION(复制) 七、SECU…

【苹果相册日历推位置推送iMessage】需要将真机的udid复制出来在此添加

推荐内容IMESSGAE相关 作者✈️IMEAX推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容3.日历推 *** …

通过伪代码结合理论模拟pc端接入单点登录(Oauth2浙里办)

前言 还记得那是一个惺忪的早晨,带着困意的我正准备去公司上班,坐车坐到一半,钉钉突然袭来一条红色预警信息,公司查出来有个人阳了,好消息:万幸我还在去公司的路上,没有和他有过多的接触&#x…

机器学习中的数学原理——对数似然函数

这个专栏主要是用来分享一下我在 机器学习中的 学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎 私信或者评论区留言!这一篇就更新一下《 白话机器学习中的数学——对数似然函数》! 目录 一、什么是对数似然函数…

SD卡打不开怎么办?sd卡损坏修复,盘点一些实用的教程

SD卡的应用十分广泛,比如,手机、数码相机、摄像机、MP4、航拍器、车载导航等。但是随着SD卡的使用时间的长短,有时会出现常见问题—SD卡打不开。SD卡里面保持着我们很多重要数据,如果它打不开,很可能导致我们里面重要数…

CSS倒影炫酷属性 -webkit-box-reflect 的使用

文章目录效果预览一、相关知识点介绍属性相关二、实现步骤总结效果预览 一、相关知识点 介绍 文档 MDN关于倒影属性介绍:https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-box-reflect 官方说明: 非标准:该特性是非标准的,不在标…

CCF BDCI|算能赛题决赛选手说明论文-05

基于TPU平台实现人群密度估计 队伍:SO-FAST 宋礼 算法工程师 京东科技 中国-北京 song200626163.com柯嵩宇计算机科学与技术专业 博士 上海交通大学 中国-上海 songyukesjtu.edu.cn包锴楠计算机科学与技术 硕士 西南交通大学 中国-成都 baokainan123gmail…

元宇宙构建基石:三维重建技术

如今“元宇宙”概念爆火,作为前沿数字科技发展的集成体之一,元宇宙正成为诸多产业寻求破局的全新风口。元宇宙是利用科技手段进行链接与创造,与现实世界映射和交互的虚拟世界,具备新型社会体系的数字生活空间;其本质上…

Day11 蓝桥杯+Java中LocalDate类——关于日期跳转题【2015省赛星系炸弹】(相比C++,Java的LocalDate是真的香!!!)

今天刷蓝桥杯的题,用CAC了之后,发现解析里有兄弟用Java的LocalDate类做的,步骤极其简洁,【由于寒假开始学过一点Java】所以我特意去搜了搜LocalDate类,发现解这种题真的很好使!!!废话…

高级性能测试系列《39.终极线程组可以模拟出压力测试场景吗?》

一、回顾1.面向目标场景:Arrivals Thread Group,这个可以面向tps。Concurrency Thread Group,可以设置面向多少个并发用户数。2.波浪型场景:Ultimate Thread Group 波浪型场景。在添加第二行时,初始化时间点要大于等于…

Makefile的使用 和 基本语法 及Makefile中变量的使用【入门必看】

MakefileMakefile概要为啥要使用MakefileMakefile的使用Makefile的语法(重点)Makefile实际使用(重点)利用Makefile删除详解Makefile指令(重点)Makefile多命令选项Makefile的选择编译特性强制执行总结Makefi…

使用 Keras 深度学习库进行CNN 图像识别

Keras 是一个用于深度学习的 Python 库,它封装了强大的数值库 Theano 和 TensorFlow。 在本文中,你将了解如何在 Keras 中开发和评估用于图像识别的深度学习模型。完成本文后,你将了解: 关于 CIFAR-10 对象分类数据集以及如何在…

Pyrene-PEG5-propargyl_1817735-33-3_芘甲酰胺五聚乙二醇丙炔

Pyrene-PEG5-propargyl,芘甲酰胺-五聚乙二醇-丙炔Product structure:Pyrene-PEG5-propargyl结构式Product specifications:1.CAS No:1817735-33-32.Molecular formula:C30H33NO63.Molecular weight:503.64.…

一文弄懂三色标记算法

本文已收录至Github,推荐阅读 👉 Java随想录 你愈是少说你的伟大,我将愈想到你的伟大。——培根 文章目录三色标记算法增量更新原始快照面试官:我们先从JVM基础开始问,了解三色标记算法吗?我:额…

CSS或JS实现逐帧动画方案

什么是逐帧动画 逐帧动画是一种在连续的关键帧中分解动画动作,即在时间轴的每一帧上绘制不同内容并使之连续播放成动画的一种常见的动画形式。与CSS关键帧动画不同的是,逐帧动画每一帧需要自行定义;关键帧动画只需定义部分关键帧,…

《机会成本》的阅读札记

【引子】第一次接触机会成本,大约还是十几年前自己在读MBA的时候,在徐华老师《管理经济学》的课上听到过一耳朵,但没有太多的认知。这个春节,阅读了《机会成本——做出高效决策的策略思维》才有了些许进一步的认识,那么…

从0到1介绍一下开源大数据服务平台dataService

1.背景&现状 在大数据领域也已经工作了多年,无论所待过的大公司还是小公司,统计出来的数据经常需要查询展示,比如说:用做大屏或者报表或者给一些线上服务提供数据源,经常会要用代码写一套接口服务,需要…

Python中的os模块

整理文件和目录最最最常用的os模块os模块是Python标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。os.getcwd()作用:获取当前的工作路径;>>> os.getcwd() D:\\ResearchWay\\Code\\PythonCode\…

2023年浏览器哪个好,如何选择浏览器?

浏览器作为电脑必备的软件之一,相信绝大多数人都用过。选择一款好用的浏览器,可以帮助我们提升工作效率。那么,浏览器哪个比较好,我们如何选择合适的浏览器?为了找到集速度、易用性、安全于一身的浏览器,我…

第四十七章 动态规划——状态压缩模型

第四十七章 动态规划——状态压缩模型一、什么是状态压缩二、例题讲解1、AcWing 1064. 小国王(1)问题(2)思路(3)代码2、AcWing 327. 玉米田(1)问题(2)思路&am…