Makefile 假想目标:.PHONY

【Makefile】Makefile文件中的 .PHONY 的作用 目录 即看即用 详细说明 即看即用 作用:告诉make,.PHONY:后面跟着的名称都不是指某个文件,即make xxxx,如果makefile中xxxx 写在.PHONY:后面,那么make xxxx 就表示执行预定命令,而不是要(make)生成xxxx .PHONY:cleaninstall run update clean: rm -f *.o temp install: …… run: …… update: …… 执行 make clean 表示运行c... 阅读详情

假想目标: .PHONY


test: a.o b.o c.o
	gcc -o test $^

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

clean:
	rm *.o test

.PHONY: clean


1.我们想清除文件,我们在Makefile的结尾添加如下代码就可以了:

clean:
	rm *.o test

1).执行make:生成第一个可执行文件。

2).执行make clean: 清除所有文件,即执行:rm *.o test。

make后面可以带上目标名,也可以不带,如果不带目标名的话它就想生成第一个规则里面的第一个目标。


2.使用Makefile

执行:make [目标]

也可以不跟目标名,若无目标默认第一个目标。我们直接执行make的时候,会在makefile里面找到第一个目标然后执行下面的指令生成第一个目标。当我们执行make clean的时候,就会在Makefile里面找到clean这个目标,然后执行里面的命令,这个写法有些问题,原因是我们的目录里面没有clean这个文件,这个规则执行的条件成立,他就会执行下面的命令来删除文件。

如果:该目录下面有名为clean文件怎么办呢?

我们在该目录下创建一个名为“clean”的文件,然后重新执行:make然后make clean,结果(会有下面的提示:):

make: `clean' is up to date.

它根本没有执行我们的删除操作,这是为什么呢?

我们之前说,一个规则能过执行的条件:1),目标文件不错在2),依赖文件比目标新。现在我们的目录里面有名为“clean”的文件,目标文件是有的,并且没有依赖文件,没有办法判断依赖文件的时间。这种写法会导致:有同名的"clean"文件时,就没有办法执行make clean操作。解决办法:我们需要把目标定义为假象目标,用关键字PHONY。

.PHONY: clean	  //把clean定义为假象目标。他就不会判断名为“clean”的文件是否存在,

然后在Makfile结尾添加.PHONY: clean语句,重新执行:make clean,就会执行删除操作。


http://wiki.100ask.org/index.php?title=%E7%AC%AC009%E8%AF%BE_gcc%E5%92%8Carm-linux-gcc%E5%92%8CMakefile

Makefile学习之路——PHONY 让你的makefile更专业。 在上一个Makefile所在目录下通过touch命令创建一个clean文件,执行make clean,将发现make总是提示clean文件是最新的,而不是按我们期望的那样对项目文件进行清楚操作。make这样的行为,是因为它将clean当做文件来处理,在当前目录下找到了clean文件,而且clean目标没有任何先决条件,所以当我们要求make构建clean目标时它会认为clean文件是最新的,从而拒绝我们真正的文件清除操作。出现这种情形,是因为我们对clean目标的定义与ma 阅读详情

相关推荐

makefile中的all和.PHONY的作用

请编写一个makefile同时编译、链接下面两个程序: main1.c: #include<stdio.h> int main(void) { printf("main1\n"); } main2.c: #include<stdio.h> int main(void) { printf("main2\n"); } 【分析】:...

Curtis’Blog 1326

makefile之.PHONY

makefile的PHONY关键字用法

cosseen的专栏 1万+

探索LLM世界:新手小白的学习路线图

通过系统的学习和实践,新手小白也能逐步掌握LLM的核心技术。掌握LLM不仅能提升个人技术水平,还能为职业发展带来广阔的前景。未来,随着技术的不断进步,LLM将在更多领域发挥重要作用,成为推动科技进步的重要力量。学习LLM是一条充满挑战但也充满机遇的道路。只要你坚持不懈、不断学习和实践,就一定能够在LLM领域取得突破。希望本文提供的学习路线图能为你指明方向,助你早日掌握LLM,开启AI学习的新篇章!

m0_62110645的博客 2360

makefile中.PHONY的作用是什么?

makefile中.PHONY的作用是什么? 初学makefile的时候,有一个关键字“.PHONY”搞不懂,在请教过同学之后豁然开朗,遂写下经验望帮助更多的同学能够理解。 在某度可以搜到phony的英文意思是:骗人的东西 那在makefile里也是这个意思吗?请往下看 在这里,我们运行make的时候是没有任何区别的 ...

Sunrise的博客 1万+

Qt中常见的面试题总结

基于Qt开发的一些常用面试题

一名热爱编程的程序员 8493

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 348

Makefile 中 .PHONY 的用途是什么?

Makefile 中的 .PHONY 是什么意思?我已经通过this,但它太复杂了。有人可以简单地向我解释一下吗?

HuntsBot的博客 3036

IB网络下不同租户业务隔离方案

IB(InfiniBand)网络隔离可以在不同的通信模式下实现,其中包括 IPoIB(IP over InfiniBand)通信模式。在 IPoIB 模式下,InfiniBand 网络可以承载 IP 数据包,使得基于 IP 的应用程序能够在 InfiniBand 网络上进行通信。在这种情况下,IB 网络隔离通常指通过配置 Partition Key(PKey)来实现不同的租户或应用程序之间的网络隔离。然而,IB 网络隔离并不仅限于 IPoIB 模式。

guganly的专栏 1527

Makefile中.PHONY的含义

Makefile中.PHONY含义

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 4485

SAP Group Reporting入门指南(11)--配置

这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找触发FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为贷方。这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找源FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为借方。例如,添加一个包含用于存储百分比的 FS 项的选项。这里选择的是FS项目的角色属性值,如果这里定义了,那么就从FS项目中找到FS项目角色属性值与之匹配的FS项目作为贷方。

bflyfish的博客 568

YOLOv13有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

《YOLOv13改进专栏重磅更新》推出500+创新改进方案,涵盖卷积、主干网络、注意力机制、检测头等核心模块优化。专栏提供完整项目代码及答疑服务,包含YOLOv13网络结构解析、环境配置、模型训练全流程指导。内容分为八大模块:卷积优化、注意力机制、细节涨点、主干网络改进、特征融合、检测头优化、小目标检测及Mamba联合改进等,支持多种创新点组合应用,助力科研论文发表。现开放限时订阅,提供试读章节和详细技术解析。

Ai缝合怪、助力小伙伴高效发论文 3385

Makefile中假想目标:.PHONY用法

看教程没有:也可以实现假想目标,试了半天,用法有问题。

m0_59949484的博客 260

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

4、假想目标.PHONY

此文编写主要参考韦东山老师教程和《跟我一起写makefile》 1.我们想清除文件,我们在Makefile的结尾添加如下代码就可以了: clean: rm *.o test 1).执行make:生成第一个可执行文件。 2).执行make clean: 清除所有文件,即执行:rm *.o test。 make后面可以带上目标名,也可以不带,如果不带目标名的话它就想生成第一个规则里面的第一个目标。 2.使用Makefile 执行:make [目标]   也可以不跟目标名,若无目标默认第一个目标。我们直接执行

wuzhishiwo的博客 573

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Makefile

使用keil, mdk,avr等工具开发程序时点击鼠标就可以编译了,它的内部机制是什么?它怎么组织管理程 序?怎么决定编译哪一个文件?答:实际上windows工具管理程序的内部机制,也是Makefile,我们在linux下来开发裸板程序的时候, 使用Makefile组织管理这些程序,本节我们来讲解Makefile最基本的规则。Makefile要做什么事情呢?组织管理程序,组织管理文件.makefie最基本的语法是规则,规则:当“依赖”比“目标”新,执行它们下面的命令。

Fatherxom的博客 181

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

makefile中的.PHONY和all的作用

.PHONY(伪目标) 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行所在规则定义的命令,有时也可以将一个伪目标称为标签。伪目标通过PHONY来指明。 PHONY定义伪目标的命令一定会被执行,下面尝试分析这种优点的妙处。 1、如果我们指定的目标不是创建目标文件,而是使用makefile执行一些特定的命令,例如: clean: rm *.o...

现从事游戏开发领域 | 团队项目be_with开发进行中 web方向感兴趣者私 ——We can do all things. 1万+

makefile中.PHONY目标的意义

在makefile文件中,会频繁的看到许多".PHONY"目标,例如: .PHONY: build_docker_image build_docker_image: # build dockerfile from stdin so that we don't send the build-context; source is bind-mounted in the develo...

dillanzhou的博客 3142

Makefile中.PHONY的作用

单词phony (即phoney)的意思是:伪造的,假的。来自collins的解释是: If you describe something as phoney, you disapprove of it because it is false rather than genuine. 那么,在Makefile中,.PHONY后面的target表示的也是一个伪造的target, 而不是真实...

qu1993的博客 5675

Makefile中的PHONY 目标

Makefile中的PHONY 目标.phony是一个特殊工作目标(special target)它用来指定一个假想的工作目标,也就是说它后面的并不是一个实际文件,而且肯定要视为未更新(也就是说条件总是满足,需要处理)PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。  如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。  例如:clean:rm *.o temp  因为"rm"命令并不产生"clea

zhangboyj的专栏 1440

makefile里.PHONY的用处

makefile里PHONY的相关介绍 Phony Targets PHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。 如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如:   clean:   rm *.o temp 因为"rm"命令并不产生"clean"文件,则每次执行"mak...

linux修行之路 5084

【Linux】Makefile中.PHONY伪目标是什么?

🔸.PHONY修饰后的目标文件,它可以被反复执行,每次都会执行它的依赖方法。🔸 .PHONY修饰的一定能被反复执行,但是能被反复执行的不一定被.PHONY修饰。

luhaoran814的博客 950

.PHONY与伪目标

文章目录1. .PHONY作用2.实例 1. .PHONY作用 有时生成的文件与伪目标重名,为了防止这种情况,使用特殊标记".PHONY"来显示的指明一个目标是伪目标,这样不管有没有这个文件,该目标都是伪目标; 伪目标:它是结合make使用完成特殊作用的目标; make all 编译所有目标; make -j8 使用8个核心编译目标 make install 安装已编译的程序; make uninstall 卸载已编译的程序; make clean 删除由make命令产生的文件,通常删除目标文件.o;

107 1万+

Makefile文件中的伪目标 .PHONY 的作用

目标并没有依赖文件,只有目标和命令。这一类目标在makefile中叫做伪目标,普通目标对应着一个需要被生成的文件,而伪目标不对应具体的文件,它仅仅充当一个目标的标识,用作执行特定的功能,而不是执行编译过程。例如Makefile1,它既没有依赖文件,同时也不会生成目标文件clean。所以clean是一个伪目标。这种说法算是一个可以接受的答案,但却不是标准答案。

wwwlyj123321的博客 1613
上一篇: volatile关键字的作用:防止变量被编译器优化
下一篇: bss、data和rodata区别与联系
mainn
博客等级 码龄10年 865粉丝 447原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值